Redis基本命令和用法学习

本文涉及的产品
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
简介: Redis基本命令和用法学习
字符串
字符串
SET Key Value 会覆盖原有的value
SET Key Value EX 10
SETNX 成功1 失败0
EXISTS 存在1 不存在0
SET key value 非原子性操作
EXPIRE key seconds # 设置生存时间
原子操作atomic
SETEX 秒
PSETEX 毫秒
GET
GETSET 获取key原有的值并SET对应的value
STRLEN 获取key对应value的长度
SETRANGE key offset value 从偏移量开始进行覆盖 如果偏移量之前为空 则用零字节 \x00代替
GETRANGE key start end 截取-1代表末尾
INCR key 自增
如果键 key 不存在, 那么它的值会先被初始化为 0 , 然后再执行 INCR 命令
如果键 key 储存的值不能被解释为数字, 那么 INCR 命令将返回一个错误。
INCR key
在key基础上进行运算操作,若不存在key,则从0开始进行运算。
INCRBY key increment
INCRBYFLOAT key floatIncrement 浮点操作
DECR key 自减
DECRBY key decrement
原子性操作atomic
MSET 同时为多个键设置值
MSET name zhangsan sex man age 18 address china
MGET name sex age address
MSETNX 当且仅当所有给定键都不存在时, 为所有给定键设置值。
即使只有一个给定键已经存在, MSETNX 命令也会拒绝执行对所有键的设置操作
哈希表
哈希表
HSET 表名 key value
HSETNX
HGET
HEXISTS 表名 key
HDEL
HLEN
HSTRLEN
HINCRBY 表名 key increment
HINCRBYFLOAT
HMSET
HMGET
HKEYS key
HGETALL
列表
列表
LPUSH key elments… 返回key的长度
LPUSHX key elemnts… 当key不存在的时候 LPUSHX 什么也不做
RPUSH key elments… 返回key长度
RPUSHX key elements
LPOP key 移除列表的头元素
RPOP key 移除列表的尾元素
RPOPLPUSH 在一个原子时间内,执行以下两个动作
将列表 source 中的最后一个元素(尾元素)弹出,并返回给客户端。
将 source 弹出的元素插入到列表 destination ,作为 destination 列表的的头元素。
安全的队列 使用 RPOPLPUSH 命令(或者它的阻塞版本 BRPOPLPUSH source destination timeout
)可以解决这个问题:因为它不仅返回一个消息,同时还将这个消息添加到另一个备份列表当中,如果一切正常的话,当一个客户端完成某个消息的处理之后,可以用
LREM key count value
命令将这个消息从备份表删除。还可以添加一个客户端专门用于监视备份表,它自动地将超过一定处理时限的消息重新放入队列中去(负责处理该消息的客户端可能已经崩溃),这样就不会丢失任何消息了。
循环列表 通过使用相同的 key 作为 RPOPLPUSH
命令的两个参数,客户端可以用一个接一个地获取列表元素的方式,取得列表的所有元素,而不必像 LRANGE key start stop
命令那样一下子将所有列表元素都从服务器传送到客户端中(两种方式的总复杂度都是 O(N))。 以上的模式甚至在以下的两个情况下也能正常工作:
有多个客户端同时对同一个列表进行旋转(rotating),它们获取不同的元素,直到所有元素都被读取完,之后又从头开始。
有客户端在向列表尾部(右边)添加新元素。 这个模式使得我们可以很容易实现这样一类系统:有 N
个客户端,需要连续不断地对一些元素进行处理,而且处理的过程必须尽可能地快。一个典型的例子就是服务器的监控程序:它们需要在尽可能短的时间内,并行地检查一组网站,确保它们的可访问性。
注意,使用这个模式的客户端是易于扩展(scala)且安全(reliable)的,因为就算接收到元素的客户端失败,元素还是保存在列表里面,不会丢失,等到下个迭代来临的时候,别的客户端又可以继续处理这些元素了。
LREM key count value
count 的值可以是以下几种:
count > 0 : 从表头开始向表尾搜索,移除与 value 相等的元素,数量为 count 。
count < 0 : 从表尾开始向表头搜索,移除与 value 相等的元素,数量为 count 的绝对值。
count = 0 : 移除表中所有与 value 相等的值。
LLEN key
LINDEX key index 返回对应下标的value
LINSERT key BEFORE|AFTER piovt element
LSET key index value
将列表 key 下标为 index 的元素的值设置为 value 。
LTRIM key start end
BRPOPLPUSH
集合
集合
SADD key value…
SISMEMBER key value 判断元素是否在集合
SPOP key 随机移除一个元素
SRANDMEMBER key count 返回key集合中count个不相同的元素
如果 count 为正数,且小于集合基数,那么命令返回一个包含 count 个元素的数组,数组中的元素各不相同。如果 count 大于等于集合基数,那么返回整个集合。
如果 count 为负数,那么命令返回一个数组,数组中的元素可能会重复出现多次,而数组的长度为 count 的绝对值。
SMOVE soure target value 把value从原集合移动到目标集合
SCARD key 返回集合元素的数量
SMEMBERS key 返回集合所有的元素
SINTER key key 返回两个集合的交集
SINTERSTORE target key key 把两个集合的交集给target
SUNION key key 返回所有集合的并集
SUNIONSTORE target key key 把两个集合的并集给target
SDIFF key key1 key2… 返回key与其他key之间的差集
SDIFFSTORE target key1 key2… 把集合的差集给target
有序集合
有序集合
ZADD key score vlaue
ZSCORE key value 返回key 中 value对应的score
ZINCRBY key increment value key中的value 增加increment
ZCARD key 返回key中有多少个value
ZCOUNT key min max 返回key中符合min max之间的数量 闭区间
ZRANGE key start stop WITHSCORES
ZREVRANGE key start stop WITHSCORES
ZRANGERBYSCORE
ZRANGEBYSCORE rank -inf +inf [withscores]
ZREVRANGEBYSCORE 与 ZRANGERBYSCORE
ZREVRANGEBYSCORE rank +inf -inf
ZRANK key value 显示对应value在key中的排名 从小到大
返回值为value的下标
ZRANK rank player3
ZREVRANK rank player3
ZREM key value
ZREM rank player
ZREMRANGEBYRANK key start stop 按照排名移除元素
ZREMRANGEBYRANK rank 0 1
ZREMRANGEBYRANK key start stop 按照分数(闭区间)移除元素
ZREMRANGEBYSCORE rank 1200 1249
ZRANGEBYLEX rank - (playerXX 按照字节范围进行排序返回元素
ZLEXCOUNT [a [f 返回开闭区间范围内的元素数量
ZLEXCOUNT myset - +
ZREMRANGEBYLEX 移除开闭区间 a->d内元素
ZREMRANGEBYLEX myset (a (d
ZUNIONSTORE 求并集
#给alibaba的所有元素乘1.5倍 把programmer和alibaba乘后的结果赋值给zijiedance
ZUNIONSTORE zijiedance 2 programmer alibaba WEIGHTS 1 1.5
ZINTERSTORE 交集
相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
11天前
|
NoSQL Java Redis
redis-学习笔记(Jedis 通用命令)
redis-学习笔记(Jedis 通用命令)
23 1
|
1天前
|
NoSQL Java Redis
【Redis】 Java操作客户端命令——集合操作与有序集合操作
【Redis】 Java操作客户端命令——集合操作与有序集合操作
|
1天前
|
NoSQL Java Redis
【Redis】 Java操作客户端命令——列表操作与哈希操作
【Redis】 Java操作客户端命令——列表操作与哈希操作
|
1天前
|
NoSQL Java Redis
【Redis】 Java操作Redis客户端命令——基础操作与字符串操作
【Redis】 Java操作Redis客户端命令——基础操作与字符串操作
|
1天前
|
机器学习/深度学习 XML NoSQL
【Redis】 String 字符串类型常见命令
【Redis】 String 字符串类型常见命令
|
11天前
|
Java Redis
redis-学习笔记(Jedis zset 简单命令)
redis-学习笔记(Jedis zset 简单命令)
20 3
|
11天前
|
Java Redis
redis-学习笔记(Jedis hash简单命令)
redis-学习笔记(Jedis hash简单命令)
20 1
|
11天前
|
存储 Java Redis
redis-学习笔记(Jedis set 简单命令)
redis-学习笔记(Jedis set 简单命令)
23 1
|
11天前
|
Java Redis
redis-学习笔记(Jedis list简单命令)
redis-学习笔记(Jedis list简单命令)
20 1
|
11天前
|
Java Redis
redis-学习笔记(Jedis string 简单命令)
redis-学习笔记(Jedis string 简单命令)
18 2