1、Redis-Key key-value 基础指令
keys * 查看当前数据库中的所有的key
Set key value 设置key-value值
Get key 通过key拿到对应的value的值
EXISTS key 判断当前的key是否存在 1代表存在 0代表不存在
move key 2 将当前数据库的key移动到数据库2中
EXPIRE key 10 设置key的过期时间 10秒后库中不在有此key
Ttl key 查看key过期时间 -2代表key已过期
Del key 移除key
Type key 查看当前key的类型
2、String字符串类型
Set key value 设置key-value值
Get key 通过key拿到对应的value的值
EXISTS key 判断当前的key是否存在 1代表存在 0代表不存在
APPEND 追加字符串,如果当前key不存在,就相当于set key
STRLEN key 获取字符串key的长度
incr值自增 decr值自减 INCRBY/DECRBY 设置步长,指定增减量
GETRANGE 获取指定范围的字符串
截取指定范围的字符串( 闭区间[0,-1] )当第二个参数设置为-1时,即截取全部字符串,get key是一样效果
SETRANGE key2 1 xx 替换指定位置开始的字符串
setex key1 30 "hello" 设置key1 的值为 hello,30秒后过期
setnx key2 "world" 如果key2不存在,创建key2 如果key2存在则失败
Mset 同时获取多个值 msetnx同时为不存在的再设置值,msetnx是一个原子性的操作,要么一起成功,要么一起失败
Mset和 mget批量分别设置和获取对象的值的方式 user:{id}:{field} {value}
getset key xxx获取旧值并设置新值xxx
使用场景:计数器 统计多单位的数量 粉丝数 对象缓存存储
3、List 列表
Flushdb 清空数据库
LPUSH左边添加值 RPUSH右边添加值 LRANGE指定下标获取元素
LPOP移除并返回最左边元素 RPOP移除并返回最右边元素
Lindex 通过下标获取值 Llen 返回列表的长度
Lrem 移除指定的值
LTRIM list 1 2 通过下标截取指定的位置(闭区间),这个list已经被改变了,截断了只剩下截取的元素
rpoplpush 移除原列表的最右边元素,并添加到新列表的最左边
Lset 将列表中指定下标的值替换为另外一个值
LINSERT list before bbb hello 将某个具体的value插入到列表中某个元素的前面或者后面
使用场景:可以使用List实现消息排队、消息队列 (Lpush Rpop)、 栈( Lpush Lpop)
4、Set 无需不重复集合
sadd 给集合添加元素 SISMEMBER myset hello判断hello是不是在myset集合中
scard 获取集合中的内容元素个数 srem 移除set集合中的指定元素
SRANDMEMBER 随机抽选出一个元素 spop 随机删除key
SMOVE myset myother redis 将myset集合中的元素,移动至myother中
差集 SDIFF 交集 SINTER 并集 SUNION
使用场景: 唯一值存储 关注/粉丝系统 计数器的去重 集合运算
5、Hash 哈希
hset设置值 hget获取值 hmset批量设置值 hmget批量获取值 hgetall 获取全部的数据
hdel 删除hash指定key字段,对应的value值也就消失 hlen 获取hash表的字段数量
HEXISTS 判断hash中指定字段是否存在 hkeys只获得所有field,hvals只获得所有value
hincrby 设置增量,若是正数则增加,若是负数则减少
hsetnx 设置值时,若key已存在则失败返回0,不存在则成功返回1
使用场景:hash最多的应用是存储变更的数据,例如将user作为键,name age作为值进行存储,尤其是是用户信息之类的,经常变动的信息。hash 更适合于对象的存储,String更加适合字符串存储。
6、Zset
zadd 添加 zrange 查看
ZRANGEBYSCORE salary -inf +inf withscores 根据salary字段升序排列,显示全部信息(包括名称、薪资)
zrem 移除 zcard 获取有序集合中元素的个数 zcount 获取集合中指定区间的元素个数
使用场景:zset 即是对set排序 可以存储班级成绩表、工资表排序等
带权重进行判断:普通消息 1 ,重要消息 2
实现排行榜应用:将播放量或评分放进有序集合中进行遍历, 或者取TopN测试