key操作
keys * # 查看所有的key
exists key # 判断当前key是否存在,存在返回1 不存在返回0
move key 1 # move切换,将选中key切换到其他数据库
clear # 清屏
set key value # 设置key value
get key # 获取key 的value
expire key 10(时间 秒为单位) # 设置key的过期时间,单位是S
ttl key # 查看当前key的剩余时间 过期后会删除 删除后显示为-2
type key # 查看当前key的类型 字符串为string
String(字符串)
-
基础操作
set key value # 设置值,存在覆盖 mset key value [key value] # 创建多个值 get key # 获得值,不存在报错 mget key [key] # 获取多个值 keys * # 查看所有的key(key有多种类型) exists key # 判断某一个key是否存在 存在为1 不存在为0 append key value # 往该key中添加字符串,如果key不存在,就创建key 相当于setkey strlen key # 获取字符串的长度(该key必须是string类型)
-
增减指定步长
incr key # 自增1 注意:当该key的值不是数字的时候无法自增 decr key # 自减1 同上 incrby key int(数字类型 步长) # 可设置步长,指定增量 decrby key int # 设置步长,指定减量
-
字符串范围 range
getrange key start(数字 开始位置) end(数字 结束位置) # 截取字符串[start,end] 是闭区间 getrange key 0 -1 # 获取全部的字符串 和 get key是一样的
-
替换
setrange key offset(int 数字 从哪个位置开始) value(替换为什么) # 替换指定位置开始的字符串
-
setex(set with expire)设定到期,setnx(set if not exist) 不存在在设置(分布式锁中常常会用)
setex key seconds(int 数字) value # 设置key的值为value,并且seconds秒后到期也就是被删除 setnx key value # 如果key不存在,则创建,如果存在则创建失败 msetnx key value key value... # 原子性操作,要么一起成功,要么一起失败,所有的key必须都不存在才可以创建成功
-
对象
set user:{id} {name:zhangsan,age:16} # 设置一个user:1对象 值为json字符串来保存一个对象 # 这里的key是一个巧妙的设计
-
getset 先get然后在set
getset key value # 返回该key的value,如果不存在则返回nil,如果存在值,则获取原来的值,并设置新的值
计数器、统计多单位数量、粉丝数、对象缓存
List(列表)
-
创建list
lpush key element(元素) [element]#将一个值或者多个值,插入到列表头部(左) 列表不存在则创建 rpush key element [element]# 插入到列表尾部(右),不存在则创建
-
删除
lpop key(list类型) # 移出列表的第一个元素( 左 头部) rpop key # 移出列表的最后一个元素(右 尾部)
-
查询
lrange key(list类型) key start top # 获取list中的值 0 -1 是取出所有 [start top] 闭区间 lindex key index(int 数字) # 通过下标获取list中某一个值
-
llen返回列表长度
-
移除指定的值
lrem key count(int 数字) element # 移出列表中指定个数的指定元素(element),精确匹配,从头部(左边开始移除)
-
trim 切片(原list上)
ltrim key start stop #通过下标对list进行切片,会改变原列表,只有区间内的保留
-
rpoplpush
rpoplpush source(来源) destination(目的地) # 移除列表中的最后一个元素,将他移动到新的列表中的头部(左边),如果目标列表不存在则会创建,
-
更新
lset key index(int) element # 将该列表中的index索引,替换为element设置的值,如果不存在列表则会报错,如果不存在该索引也会报错 索引为从0开始
-
linsert 将某个具体的value插入到列表中某个元素的前面或者后面
linsert key befor(前面)|(或者)after(后面) element(就好像value 元素的意思) lpush 头部插入 rpush 尾部插入 linsert 具体元素中间插入
消息排列 消息队列(Lpush Rpop) 栈 (Lpush Lpop)
Set(集合)
set中的值是不能重复的,集合中的值是乱序的
命令基本上都是s开头的
-
增加
sadd key member member(成员) .... # 向key这个set中插入值 如果存在会插入失败
-
查看
smembers key # 查看这个集合中的所有成员(是指定集合) sismerber key member # 查看这个集合中有没有这个值
-
获取集合中的元素个数
scard key # 查看这个集合中的成员个数
-
移出set集合中指定的元素
srem key member member.... # 移出集合中的指定元素 移出多个成员的时候 如果移出了一个不存在的成员不报错,应该就是跳过
-
随机
mrandmember key [count](加上就是随机取出多个不加就是随机取出一个) # 随机取出一个或者多个成员 spop key [count](同上) # 随机弹出一个或者多个成员 key是集合
-
移动
smove source(成员的来源) destination(成员的去处) member(成员) # 将一个指定的成员,移动到另一个set集合中 smove myset myset2 "hello" # 这两个成员必须是同一个库中的
-
交集 并集 差集
共同关注(交集) 等
sdiff key [key].... # 求多个集合的差集(就是去掉相同的 是第一个集合与其他集合的差集) sinter key [key]... # 求多个集合的交集(显示的成员存在于所有查询的集合中) sunion key [key]# 求多个集合的并集(就是全部加起来)
Hash(哈希)
Map集合,key-map! 这个值是一个map集合!本质和String类型没有太大区别,keys一个key-value
hset key field value [field value] # 增加一个具体的field-value field是该value的域
hget key field # 通过该hash中的域field来获取对应的value
hmset key filed value [field value] # 与hset一样 hset不加m也可以添多个
hget key field [filed] # 获取hash中的多个域对应的值value
hgetall key # 查看hash中的所有的数据 显示是以 field-value形式显示的
hdel key field [field] # 删除hash指定的域field对应的值value也就消失了
hexists key field # 判断hash中指定的域是否存在 存在返回1 不存在返回0
hkeys key # 获取hash中的所有域
hvalue key # 获取hash中的所有value
hincrby key field increment(数量) # hash对应域对应值的增量 注意!该值一定要为数字 当incrment为负数的时候表示,减少
hsetnx key field value # 如果不存在可以设置 如果存在则不变动沿用之前的
hash用来存储变更的数据 user name age 尤其是用户信息之类的,hash更适合对象的存储,String更适合字符串存储
hset user 1 {name:zhangsan,age:16} # 设置一个user id对象 值为json字符串来保存一个对象
比set user:1 {name:zhangsan,age:16}更合适一些
Zset(有序集合)
在set的基础上,增加了一个值,一般都设置为数字,可以用来进行大小排列等
-
增加
zadd key score(分数) member [score member] # 往zset中加入成绩与其对应的成员 成绩可以是浮点型和整形 如果添加成员的时候成员存在那么可以更新其成绩
-
查询
zrange key start stop [WITHSCORES](加上那么查询时会显示对应的成绩) # 返回指定区间内的成员 1表示第一个 2是第二个... -1是最后一个 -2是倒数第二个... zcard key # 获取zset中的member个数 zcount key min max # 获取指定区间内的成员数量
-
排序
zrangebyscore key min max [WITHSCORES] # 按照zset的成绩进行从小到大的展示 -inf 表示最小值 +inf 表示最大值 ZRANGEBYSCORE salary -inf 2500 withscores # 展示工资小于2500员工的升序排列 zrevrange key start stop [WITHSCORES] # 从大到小进行排列
-
弹出
zrem key member [ke memebr] # 移出zset中的指定成员 不能通过成绩(score) 来弹出
zset排序,同时去掉重复成员 存储班级成绩表,工资表等
普通消息 1 ,重要消息 2,带权重进行判断!
排行榜应用实现,去TOP N测试