Redis键(key)

常用命令

key 查看当前库所有的key(匹配:key )
exists key 判断某个key是否存在
type key 查看你的key是什么类型
del key 删除指定的数据key
unlink key 根据value选择非阻塞删除
仅将keys从keyspace元数据中删除,真正的删除会在后续异步操作
expire key10 10秒钟:为给定的key设置过期时间
ttl key查看还有多少秒过期,-1表示永不过期 .-2表示已经过期了
select命令切换数据库
dbsize查看当前数据库key的数量
flushdb清空当前库
flushall通杀数据库

Redis字符串(String)

常用命令

set添加键值对
image.png
get取值
image.png
append 将给定追加到原始的末尾
image.png
strlen获得值得长度
image.png
strnx只有在key不存在时设置key的值
image.png
incr将key中存储数字值增1
image.png
decr将key中存储数字值减1
image.png
mset….
同时设置一个或多个key-value对
image.png
同时获取一个或多个value
mget
image.png
msetnx
同时设置一个或多个key-value时,当且仅当所有给定key都不存在
getrange <起始位置><结束位置>
获得值得范围,类似于java中得substring,前包,后包
image.png
setrange<起始位置>
覆盖所存储的字符串值,从<起始位置>开始

setex<过期时间>
设置键的同时,设置过期时间,单位秒。
getset
以新换旧,设置了新值同时获得旧值。

Redis列表(List)

单键多值 Redis列表是简单的字符串列表,按照顺序排序,你可以添加一个元素到列表的头部(左边)或者尾部(右边),底层是双向链表

常用命令

lpush/rpush …..从左边/右边插入一个或者多个值。
lpop/rpop从左边/右边吐出一个值,值在键在,值光健忘
rpoprpush列表右边吐出一个值,插到列表的左边
lrange
按照索引下标获得元素(从左到右)
lrange 索引下标获得元素(从左到右)0表示左边第一个,-1代表右边第一个
lindex按照索引下标获得元素(从左到右)
llen获取列表长度
linsertbefore的后面插入插入值
lrem从左边删除n个value(从左到右)
lset将列表key下标为index的值换成value

List底层数据结构为快速链表quickList
image.png

Redis集合(Set)

redis set对外提供的功能与list类型是一个列表的功能,特殊之处是set可以自动排重的,当你需要存储一个列表的,当你需要存储一个列表数据,又希望不出现重复的时候,set是一个很好的选择。
Redis的set是string类型的无序集合。它的底层其实是一个valuenullhash表,所有添加,删除,查找的复杂度都是O(1)
sadd….
将一个或多个member元素加入集合key中,已经存在的member元素将被忽略,
Smember 返回该元素所有的值。
Sismember 判断集合是否含有该值,有1无0
scard返回该集合中的元素个数。
srem…删除集合中的某个元素
spop随机从该集合中吐出一个值。
srandomember随机从该集合中取出n个值,不会从集合中删除。
smovevalue把集合中一个值从一个集合移动到另外一个集合
sinter返回这两个集合中的交集元素
sunion返回这两个集合中的并集元素
sdiff返回这两个集合中的差集元素
底层是一个字典,字典里面包含两个哈希表

Redis哈希(Hash)

Redis的哈希是一个键值对,哈希适合存放对象。
himage.png
hset集合中的键赋值value
hget集合取出value.
hmet集合取出value
hexists查看哈希表key中,给定域field是否存在。
hkeys列出该hash集合中的所有key
hvals列出该hash集合中所有的value
hinceby为哈希表key中的域field的值加上增量1
hsetnx 将哈希表key中的域field的值设置为value,当且仅当field不存在的时候。

底层结构ziplist(压缩列表)、hashtable(哈希表),当field长度较短且个数较少时,ziplist,否则hashtable.

Redis有序集合Zset

Redis有序集合Zset与普通几个set非常相似,是一个没有重复元素字符串集合
不同之处是有序集合的每个成员都关联了一个评分(Score),这个评分(score)被用来按照从最低到最高分的方式排序集合中的成员。集合的成员是唯一的,但是评分可以重复。

image.png
image.png
image.png
底层: skiplist 编码的 Zset 底层为一个被称为 zset 的结构体,这个结构体中包含一个字典和一个跳跃表

Redis发布订阅

Redis事务