Redis常用五大数据类型
五大数据类型常用的命令(此处只介绍常用命令更多命令请参考https://www.redis.net.cn/tutorial/3505.html):
key(键):
keys * 查看当前库全部key名称。
exists key 判断某个key是否存在。存在返回1,不存在返回0。
move key db 把当前库某个key移到指定库。
expire key second 为指定的key设置过期时间,单位为秒。
ttl key 查看指定key还有多少秒过期,-1表示永不过期,-2表示已过期(如果过期该key会被移出库)。
type key 查看你的key是什么数据类型。
del [key...] 删除指定key,可同时删除多个。
1.string(字符串):
string类型是redis最基本的数据类型,redis中一个字符串value最多可以是512m。
string类型是二进制安全的。意思是redis的string可以包含任何数据。比如jpg图片或者序列化的对象。
set 设置一个key-value。
get 获取一个key的value。
del 删除一个或多个key-value。
append 对指定key的value追加值。
strlen 获取指定key的value的长度。
incr 对指定key的value每次加1。 一定要是数字才能进行加减。
decr 对指定key的value每次减1。 一定要是数字才能进行加减。
incrby 对指定key的value每次加n(数量可指定)。 一定要是数字才能进行加减。
decrby 对指定key的value每次减n(数量可指定)。 一定要是数字才能进行加减。
getrange 获取指定key的value的指定区间范围内的值,类似于java的substring。
setrange 设置指定key的value的指定区间范围内的值,原区间范围的值会被覆盖。
setex(set with expire) 设置一个key-value并指定该key的过期时间(秒)。
setnx(set if not exist) 设置一个key-value,如果该key存在则不设置,如果不存在则设置。
mset 设置一个或多个key-value。
msetnx 设置一个或多个key-value,如果key都不存在则设置,如果其中有一个key存在则不设置。
mget 获取一个或多个key的value。
getset 获取一个key(key必须存在)并设置该key的值,返回原来的值。
2.hash(哈希,类似java里的map):
redis hash 是一个键值对集合。redis hash 是一个string类型的field和value的映射表,hash特别适合用于存储对象。
类似java里面的map<string,object>。kv模式不变,但v是一个键值对。
hset 添加一个hash集合并往里面添加一对kv。
hget 获取hash集合某个key的数据。
hmset 添加一个hash集合并往里面添加n对kv。
hmget 获取hash集合n个key的数据。
hgetall 获取hash集合全部的kv数据。
hdel 移除hash集合中的n个key。
hlen 获取hash集合中key的数量。
hexists 判断hash集合中某个key是否存在。
hkeys 获取hash集合全部key。
hvals 获取hash集合全部value。
hincreby 给hash集合中的某个key加n。 一定要是数字才能加,加整数。
hincrebyfloat 给hash集合中的某个key加n。 一定要是数字才能加,加整数或小数。
hsetnx 添加一个hash集合并往里面添加一对kv(如果key不存在则添加,存在则不添加)。
3.list(列表):
redis list 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。它的底层实际是个链表。
说明:l(left)、r(right),将结构理解为栈,l表示栈顶、r栈底。
lpush 添加一个list列表,将一个或多个值插入到列表头部,先进后出。
rpush 添加一个list列表,将一个或多个值插入到列表尾部,先进先出。
lrange 获取list列表指定区间范围内的值。
lpop 移除list列表顶部元素(第一个元素),并返回被移除的元素。
rpop 移除list列表底部元素(最后一个元素),并返回被移除的元素。
lindex 按照顶部索引下标获得元素。
llen 获取list列表的长度。
lrem 移除list列表n个value。(lrem key count value)。
ltrim 截取list列表指定范围内的值后再赋值给list列表(原值将被截取值覆盖)。
rpoplpush 将指定列表的底部元素移到目标列表的顶部。
lset 设置列表指定下标的值。
linsert 在指定列表的某个元素前面或后面添加元素。(linsert key before/after 列表中的元素 添加的元素)。
list列表总结:
它是一个字符串链表,left、right都可以添加。
如果键不存在,创建新的链表。
如果键已存在,新增内容。
如果值全移除,对应的键也就消失了。
链表的操作无论是头和尾效率都极高,但假如是对中间元素进行操作,效率就比较低了。
4.set(集合):
redis set是string类型的无序集合。它是通过hashtable实现的。
sadd 将一个或多个成员插入到set集合中。
smembers 遍历set集合。
sismember 判断指定元素是否是set集合的成员。
scard 获取set集合中元素的个数。
srem 移除set集合中n个元素。
srandmember 随机获取set集合中n个元素。
spop 随机移除set集合中n个元素并返回被移除的元素。
smove 将指定集合中的某个元素移到目标集合中。
sdiff 集合的减集。
sinter 集合的交集。
sunion 集合的并集。
5.zset(sorted set:有序集合):
redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。不同的是每个元素都会关联一个double类型的分数。
redis正是通过分数来为集合中的成员进行从小到大的排序。zset的成员是唯一的,但分数(score)却可以重复。
zadd 将一个或多个成员插入到zset集合中。(zadd key 分数 值...)例如:[zadd zset1 80 zhangsan]。
zrange 获取zset集合指定区间范围内的值(zrange key start stop [withscores])。加withscores可查看分数与值
zrangebyscore 获取zset集合指定分数范围内的值(zrangebyscore key [(]min [(]max [limit offset count]),“(”表示不包含。
zrem 移除zset集合中n个元素。
zcard 获取zset集合中元素的个数(不包含分数,分数和元素是一体的)。
zcount 获取zset集合指定分数范围内的个数。
zrank 获取zset集合某个元素的下标。
zscore 获取zset集合某个元素对应的分数。
zrevrank 逆序获取zset集合某个元素的下标。
zrevrange 逆序获取zset集合指定区间范围内的值。
zrevrangebyscore 逆序获取zset集合指定分数范围内的值。