1.1 string 类型
set [key] [name]
get [key] 获取键值
append [key] [name] 追加字符串,如果当前key不存在,就相当于set key name
strlen [key] 返回字符串长度
dbsize 数据库大小
keys * 获得键名列表
flushdb 删除当前数据库
flushall 删除所有数据库
EXISTS [key]判断一个键是否存在
del [key] 删除键
type key 获得键值的数据类型
move [key] [dbname] 移动key到数据库dbname
EXPIRE [key] [sec] 设置多长时间失效,单位是秒
ttl [key] 查看剩余失效时间
incr [key] 自增1
decr [key] 自减1
INCRBY [key] [step] 指定增量步长
DECRBY [key] [step] 指定减量步长
GETRANGE [key] [start] [end] 截取字符串[start,end]范围的字符
SETRANGE [key] [offset] [value] 把从偏移量1开始的字符替换为value
setex [key] [time] [value] 设置key 的值在time时间后过期,时间单位是秒
setnx [key] [value] 如果key不存在就设置,其值是value。若key存在,就不设置,返回0,在分布式锁中常常使用
mset [key] [value] [k2] [v2] ...设置多个值
msetnx [k1] [v1] [k2] [v2] 是一个原子操作,也是同时设置多个值,如果有的值已经存在,就失败
mget [k1] [k2] [k3] 同时获取多个值
key的一个巧妙的设计
mset [userKey]:[id]:[key1] [value1][userKey]:[id]:[key2] [value2]
mget [userKey]:[id]:[key1] [userKey]:[id]:[key2]
如:mset user:1:name zhangsan user:1:age 13
mget user:1:name user:1:age
getset [key] [name] 先get后set。如果不存在值,就返回nil,如果存在值,就获取原来的值,并设置新的值
1.2 list类型
在redis里list可以变成stack,queue,阻塞队列。实际上是一个链表。在两边插入或者改动效率最高!中间元素效率会低一点。
消息队列(LPUSH RPOP)/ 栈(LPUSH LPOP)
lpush [key] [value]/[value]... 将一个值或者多个值插入到一个列表的头部(L-left)
rpush [key] [value]/[value]...将一个值或者多个值插入到一个列表的尾部(R-right)
lrange [key] [start] [end] 通过区间获取具体的值,其中【0 -1】表示获取整个区间
lpop [key] [count 可选] 移除头部几个元素,默认一个
rpop [key] [count可选] 移除尾部几个元素,默认一个
lindex [key] [index] 获取某个下标的值,下标从0开始
llen [key] 返回列表的长度
lrem [key] [count] [value] 移除列表中count个值为value的数据,精确匹配
ltrim [key] [start] [stop] 截取链表中从start开始到stop的数据
rpoplpush [source] [destination] 移除列表最后一个元素,将他移动到新的列表
lset [key] [index] [value] 如果列表不存在就会报错,如果存在,就是更新list中下标为index的元素值为value
linsert [key] before/after [pivot] [value] 在列表key中单词pivot的前面或者后面加元素value
1.3 set 集合类型
set集合,里面的元素是不能重复的
sadd [key] [value]/[value]... 往集合中添加元素
smenmber [key] 查看集合key所有的值
sismember [key] [value] 查看value是不是集合key中的值
scard [key] 返回集合总数
srem [key] [value] 删除集合中某个元素
srandmember [key] [cnt可选] 从集合中随机抽取出几个元素,默认一个
spop [key] [cnt可选] 随机删除集合中的几个数,默认一个
smove [key] [src] [destination] [value] 把原集合src的值value移动到目标集合des
数字集合类
差集:sdiff [key1] [key2]..
交集:sinter [key1] [key2] ..
并集:sunion [key1] [key2] ..
1.4 hash哈希类型
hash(哈希)相当于一个map集合,本质和string没有什么区别,还是一个简单的key-value
hset [key] [field] [value] set一个具体的key-value
hget [key] [field] 获取一个set中字段值
hmset [key] [field] [value] [field] [value]
set多个值
hmget [key] [field] [filed] get多个值
hgetall [key] 获取全部的数据
hdel [key] [field] 删除hash指定key字段的值!对应的value字段值也消失
hlen [key] 获取哈希表的字段数量
hexists [key] [field] 判断哈希表中是否存在字段field
hkeys [key] 获取哈希表中所有的keys字段名
hvals [key] 获取哈希表中所有的values值
hincrby [key] [field] [step] 指定增量
hsetnx [key] [field] [value] 如果不存在则设置,如果存在就不设置
hash变更的数据usr age
name 尤其是用户信息之类的,经常变动的信息。
hash更适合存储对象,string更适合字符串
1.5 zset有序集合类型
Zset可以排序的一个集合
zadd [key] [score] [value] 如ZADD score 100 liming 32 wangxiao 120 lili 200 wangwu
zrange [key] [start] [end] [withscores可选] 列出start到end之间的数据
ZRANGEBYSCORE key min max [WITHSCORES]
[LIMIT offset count] 返回key的有序集合中的分数在min和max之间的所有元素(包括分数等于max或者min的元素)。元素被认为是从低分到高分排序的。
如:zrangebyscore score -inf +inf withscores
zrevrange [key] [start] [end] [withscores可选] 将数据从start到end,从大到小排序,列出 有序集合
zrem [key] [value] 删除有序集合中值为value的数据
zcard [key] 获取有序集合数量
zcount [key] [min] [max] 获取指定区间的集合
set可以用于排序,存储班级成绩表,工资排序表
普通消息1,重要消息2 带权重进行判断
排行榜应用实现 取TOP N
网友评论