目录
基本操作
设置字符串值
set key value [EX seconds] [PX milliseconds] [NX|XX]
EX 设置过期时间,秒,setex key seconds value
PX 设置过期时间,毫米,psetex key milliseconds value
NX 键不存在,才能设置,等同于setnx key value
XX 键存在时,才能设置
设置多个键值的字符串值
mset key value [key value ...]
mget key value [key value ...]
键不存在时,设置字符串值
Msetnx key value [key value]
过期
设置多少秒或者毫秒后过期
expire key seconds
pexpire key milliseconds
设置在指定Unix时间戳过期
expireat key timestamp
pexpireat key milliseconds-timestamp
删除过期
persist key
生存时间
time to live,key的剩余生存时间
查看剩余生存时间
TTL key
PTTL key
key存在但没有设置TTL,返回-1
key存在,但还在生存期内,返回剩余的秒或者毫秒
key曾经存在,但已经消亡,返回-2(2.8版本之间返回-1)
查找健
keys pattern
pattern取值
*任意长度字符
?任意一个字符
[]字符集合,表示可以是集合中的任意一个
键类型
type key
键是否存在
exists key
键重命名
rename key newkey
renamenx key newkey
键删除
del key [key ...]
获取值
get key
获取多个值
mget key [key ...]
返回旧值并设置新值
getset key value
如果键不存在,就创建并赋值
字符串长度
strlen key
追加字符串
append key value
获取子字符串
getrange key start end
索引值从0开始,负数表示从字符串右边向左数起,-1表示最后的字符
覆盖字符串
setrange key offset value 从offset开始覆盖
步长1的增减
incr key
decr key
字符串值会被解释成64位符号的十进制整数来操作,结构依然转成字符串
步长增减
incrby key decrement
decr key decrement
字符串值会被解释成64位有符号的十进制整数来操作,结果依然转成字符串
位图bitmap
位图不是真正的数据类型,它是定义在字符串类型中
一个字符串类型的值最多能存储512M字节内容
位上限:2^(9+10+10+3)=2^32b
设置某一位上的值
setbit key offset value
offset偏移量,从0开始
value不写默认为0
获取某一位上的值
getbit key offset
返回指定0或者1在指定区间上第一次出现的位置
bitpos key bit [start] [end]
位操作
bitop operation destkey key [key ...]
operation可以是 and,or,not,xor
and 求逻辑并,保存到destkey
or求逻辑或
not求逻辑非
xor求逻辑异或
统计指定区间上值为1的个数
bitcount key [start] [end]
从左向右从0开始,从右向左从-1开始,注意官方start、end是位,测试后为字节
登录不同的库
redis-cli --help
redis-cli -n 2
清除当前库数据
flushdb
清除所有库中的数据
flushall
Set集合
无序的、去重的
元素是字符串类型
最多包含2^32-1元素
增加一个或多个命令
sadd key member [member ...]
如果元素已经存在,则自动忽略
移除一个或者多个元素
srem key member [member ...]
元素不存在,自动忽略
返回集合包含的所有元素
smembers key
如果集合元素过多,需要遍历,可能会造成服务器阻塞,生产环境应避免使用
检查给定元素是否存在于集合中
sismember key member
集合的无序性
注意, SMEMBERS 有可能返回不同的结果,所以,如果需要存储有序且不重复的数据使用有序集合,存储有序可重复的使用列表
随机返回集合中指定个数
srandmember key [count]
如果为正数,且小于集合基数,那么返回一个包含count个元素的数组,数组中的元素各不相同,数组中的元素各不相同。如果count大于等于集合基数,那么返回整个集合
如果为负数,那么命令返回一个数组,数组中的元素可能会重复很多次,而数组的长度为count的绝对值
如果为0,返回空
如果不指定,随机返回一个元素
返回集合中元素的个数
scard key
键的结果会保存信息,集合长度就记录在里面,所以不需要遍历
随机从集合中移除并返回这个被移除的元素
spop key
把元素从原集合移动到目标集合
smove source destination member
差集
sdiff key [key ...] 从第一个key的集合中去除其它集合和自己的交集部分
sdiffstore desination key [key ...] 将差集结果存储到目标key中
交集
sinter key [key ...] 取所有集合交集部分
sinterstore destination key [key ...] 将交集结果存储在目标key中
并集
sunion key [key ...] 取所有集合并集
sunionstore destination key [key ...] 将并集结果存储在目标key中
SortedSet有序集合
类似set集合
有序的、去重的
元素是字符串类型
每一个元素都关联着一个浮点数分值(Score) ,并按照分值大小从小到大的顺序排列集合中的元素,分值可以相同
最多包含2^32-1元素
增加一个或多个元素
zadd key score member [score member ...]
如果元素已经存在,则使用新的score
移除一个或者多个元素
zrem key member [member ...]
元素不存在,自动忽略
显示分值
zcore key member
增加或者减少分值
zincrby key increment member
increment 为负数就是减少
返回元素的排名(索引)
zrank key member
返回元素的逆序排名
zrevrank key member
返回指定索引区间元素
zrange key start stop [withscores]
如果score相同,则按照字典序列排序
默认按照score从小到大,如果需要score从大到小排序,使用zrevrange
返回指定索引区间元素
zrevrange key start stop [withscores]
返回指定分值区间元素
zrangebyscore key min max [withscores] [limit offset count]
返回score默认属于[min,max]之间,元素按照score升序排列,score相同字典序
limit中offset代表跳过多少个元素,count是返回几个
使用小括号,修改区间为开区间
-inf 和 +inf表示负无穷和正无穷
返回指定分值区间元素
zrevrangebyscore key min max [withscores] [limit offset count]
返回score默认属于min max之间,降序
移除指定排名范围的元素
zremrangebyrank key start stop
移除指定分值范围的元素
zremrangebyscore key min max
返回集合中元素个数
zcard key
并集
zunionstore destination numkeys key [key ...] [weights weight] [aggregate sum|min|max]
numkeys 指定key的数量,必须
weights 选项,与前面设定的key对应,对应key中每一个score都要乘以这个权重
aggregate ,指定并集结果的聚合方式
sum 将所有集合中某一个元素的score值之和作为结果集中该成员的score值
MIN:将所有集合中某一个元素的score值中最小值作为结果集中该成员的score值
MAX:将所有集合中某一个元素的score值中最大值作为结果集中该成员的score值
交集
ZINTERSTORE destination numkeys key [key ...] [WEIGHTS weight] [AGGREGATE SUM|MIN|MAX]
numkeys指定key的数量,必须
WEIGHTS选项,与前面设定的key对应,对应key中每一个score都要乘以这个权重
AGGREGATE选项,指定并集结果的聚合方式
SUM:将所有集合中某一个元素的score值之和作为结果集中该成员的score值
MIN:将所有集合中某一个元素的score值中最小值作为结果集中该成员的score值
MAX:将所有集合中某一个元素的score值中最大值作为结果集中该成员的score值
列表和hash
list列表
基于linked list实现
元素是字符串类型
列表头尾增删快,中间增删慢,增删元素是常态
元素可以重复出现
最多包含2^32-1
列表的索引
从左到右,从0开始
从右到左,从-1开始
命令
B block 块,阻塞
L left 左
R right 右
X exist 存在
左右或者头尾压入元素
LPUSH key value [value ...]
LPUSHX key value
RPUSH key value [value ...]
RPUSHX key value
左右或者头尾弹出元素
LPOP key
RPOP key
从一个列表尾部弹出元素压入到另一个列表的头部
RPOPLPUSH source destination
返回列表中指定范围元素
LRANGE key start stop
LRANGE key 0 -1 表示返回所有元素
获取指定位置的元素
LINDEX key index
设置指定位置元素的值
LSET key index value
列表长度,元素个数
LLEN key
从列表头部开始删除值等于value的元素count次
LREM key count value
count > 0 : 从表头开始向表尾搜索,移除与 value 相等的元素,数量为 count
count < 0 : 从表尾开始向表头搜索,移除与 value 相等的元素,数量为 count 的绝对值
count = 0 : 移除表中所有与 value 相等的值
去除指定范围外的元素
ltrim key start stop
在列表中某个存在的值(pivot)前或后插入元素
LINSERT key BEFORE|AFTER pivot value
key和pivot不存在,不进行任何操作
阻塞
如果弹出的列表不存在或者为空,就会阻塞
超时时间设置为0,就是永久阻塞,直到有数据可以弹出
如果多个客户端阻塞在同一个列表上,使用First In First Service原则,先到先服务
左右或者头尾阻塞弹出元素
BLPOP key [key ...] timeout
BRPOP key [key ...] timeout
从一个列表尾部阻塞弹出元素压入到另一个列表的头部
BRPOPLPUSH source destination timeout
Hash散列
由field和关联的value组成的map键值对
field和value是字符串类型
一个hash中最多包含2^32-1键值对
设置单个字段
HSET key field value
HSETNX key field value
key的filed不存在的情况下执行,key不存在直接创建
设置多个字段
HMSET key field value [field value ...]
返回字段个数
hlen key
判断字段是否存在
hexists key field
key或者field不存在,返回0
返回字段值
HGET key field
返回多个字段值
HMGET key field [field ...]
返回所有的键值对
HGETALL key
返回所有字段名
HKEYS key
返回所有值
HVALS key
在字段对应的值上进行整数的增量计算
HINCRBY key field increment
在字段对应的值上进行浮点数的增量计算
HINCRBYFLOAT key field increment
删除指定的字段
HDEL key field [field ...]
hash的用途
节约空间
不适合hash的情况
使用二进制位操作命令:因为Redis目前支持对字符串键进行SETBIT、GETBIT、BITOP等操作,如果你想使用这些操作,那么只能使用字符串键,虽然散列也能保存二进制数据
使用过期键功能:Redis的键过期功能目前只能对键进行过期操作,而不能对散列的字段进行过期操作,因此如果你要对键值对数据使用过期功能的话,那么只能把键值对储存在字符串里面