redis五大数据类型及常用命令
1. String(key-value)
set key value 添加/修改数据
get key 获取数据
del key 删除数据
mset key1 value1 key2 value2... 设置多个键值数据
mget key1 key2... 获取多个数据
strlen key 字符串长度
append key value 追加信息,没有则新建
getset 获得原始key的值,同时设置新值
incr key 字符串数值+1运算
decr key 字符串数值-1运算
setex 设置有效期(秒)的数据
psetex 设置有效期(毫秒)的数据
setnx 存在不做操作,不存在添加
incrby 加法操作
decrby 减法操作
2.Hash(哈希)
hset key field value 设置hash类型值
hget key field 获取key下field的值
hsetnx hsetnx key field value 如果key对应的field不存在,则赋值,存在时什么都不做
hmset key field1 v1 field2 v2... 设置多个field,值存在就替换
hmget key field1 ... 获取key的多个field
hgetall key 获取key下的所有field和value
hkeys key 获取key对应的所有field
hvals key 获取key对应的所有value
hincrby key field 2 增减数值
hdel key field1 f2... 删除key对应的filed的值,field可以写多个
hlen key 返回指定key的field数量
hexists key field key下的field是否存在
3.List(列表)
rpush key value [value …] 向队列右边添加元素
lpush key value [value …] 向队列左边添加元素
rpop key 从list的右边(尾部)删除元素并同时返回删除的值
lpop key 从list的左边(头部)删除元素并同时返回删除的值
lrange key start stop 获取队列范围内的元素
linsert key BEFORE|AFTER pivot value 向指定集合key中元素前或者后插入新元素
lrem key count value 左边移除队列中元素,指定移除个数和要移除的值
rpoplpush key1 key2 从源list的尾部元素删除并插入到目标list的头部
llen key 返回指定集合的元素个数
4.Set(集合)
sadd key member [member …] 添加若干指定元素member到key集合中
spop key [count] 随机移除元素
srem key member [member … ] 移除指定元素,并返回成功移除元素个数
scard key 返回指定集合key中的元素数
sismember key member 返回集合key中是否存在指定元素member
smembers key 返回集合key的所有元素
srandmember key [count] 随机返回集合key中的一个元素,或随机返回集合key中的count的元素
smove source destination member 将指定元素member从集合source中移动到集合destination中
sinter key [key …] 返回所有指定集合中元素的交集
sinterstore destination key [key …] 返回所有指定集合中元素的交集,并将结果保存在集合destination中
sunion key [key …] 返回所有指定集合中元素的并集
sunionstore destination key [key …] 返回所有指定集合中元素的并集,并将结果保存在集合destination中
sdiff key [key …] 返回一个集合与其余指定集合的差集
sdiffstore destination key [key …] 返回一个集合与其余指定集合的差集,并将结果保存在集合destination中
5.ZSet(有序集合)
zadd key score member[{score member}…]
创建或设置指定key对应的有序集合,根据每个值对应的score来排名,升序。例如有命令 zadd key1 10 A 20 B 30 D 40 C;那么真实排名是 A B D C
zrem key member 删除指定key对应的集合中的member元素
zcard key 返回指定key对应的有序集合的元素数量
zincrby key increment member 将指定key对应的集合中的member元素对应的分值递增加 increment
zcount key min max 返回指定key对应的有序集合中,分值在min~max之间的元素个数
zrank key member 返回指定key对应的有序集合中,指定元素member在集合中排名,从0开始切分值是从小到大升序
zscore key member 返回指定key中的集合中指定member元素对应的分值
zrange key min max [withscores] 返回指定key对应的有序集合中,索引在min~max之间的元素信息,如果带上 withscores 属性的话,可以将分值也带出来
zrevrank key member 返回指定key对应的集合中,指定member在其中的排名,注意排名从0开始且按照分值从大到小降序
- zrevrange key start end [withscores] 指定key对应的集合中,分值在 start~end之间的降序,加上 withscores 的话可以将分值以及value都显示出来
zrangebyscore key start end [withscores] 同 zrange命令不同的是,zrange命令是索引在star~end范围的查询,而zrangebyscore命令是根据分值在start~end之间的查询且升序展示
zrevrangebyscore key max min [withscores] 同zrangebyscore命令不同的是,zrangebyscores是根据分值从小到大升序展示,而zrevrangebyscore命令是从max到min降序展示
zremrangebyrank key start end 移除指定key对应集合中索引在start~end之间(包括start和end本身)的元素
zremrangebyscore by min max 同zremrangebyrank命令类似,不同的该命令是删除分值在min~max之间的元素
zinterstore desk-key key-count key… 获取指定数量的key的交集。例如有 key1:{10:A,20:B,30:C},key2{40:B,50:C,60:D},那么命令 zinterstore key3 2 key1 key2 意思就是 将key1 key2这两个集合的交集 赋给key3,如何获取key1与key2的交集呢。 key1中存在 A B C,key2中存在 B C D,那么交集就是 B 和 C,且 B与C对应的score也会叠加,即 key3{B:20+40=60,C:30+50=80}
zunionstore desk-key key-count key… 获取指定数量key的并集,例如有 key1{10:A,20:B,30:C},key2{40:B,50:C,60:D},可以看出 A和D不是key1与key2共有的,但是并集中只要存在就会记录进去,然后B与C是共有的,即 并集的结果就是 key3{10:A,B:60,D:60,C:80}