『Redis』Redis数据类型简介
本篇博客介绍一下Redis中的数据类型及其简单使用。
Redis的五大数据类型
String(字符串):
- String是Redis最基本的类型,可以将其理解为和Memcached一模一样的类型,一个key对应一个value;
- String类型是二进制安全的。意思是Redis的String可以包含任何数据。比如jpg图片或者序列化的对象;
- String类型是Redis最基本的数据类型,一个Redis中字符串value最多可以是512M。
Hash(哈希,类似于Java中的Map):
- Redis Hash是一个键值对集合;
- Redis Hash是一个String类型的field和value的映射表,Hash特别适合用于存储对象。
List(列表):
- Redis列表是简单的字符串列表,按照插入顺序排序。可以添加一个元素到列表的头部(左边)或者尾部(右边);
- 底层是一个双向循环链表。
Set(集合):
- Redis的Set是String类型的无序集合;
Zset(sorted set:有序集合):
- Redis Zset和Set一样也是String类型元素的集合,且不允许重复的成员;
- 不同的是每个元素都会关联一个double类型的分数;
- Redis正是通过分数来为集合中的成员进行从小到大的排序;
- Zset的成员是唯一的,但分数(score)却可以重复。
Redis数据类型操作命令
Redis 键(key)
-
keys *
:查看所有的key; -
exists key的名字
:判断某个key是否存在; -
move key db
:将一个key移动到指定库; -
expire key 秒钟
:为给定的key设置过期时间; -
ttl key
:查看还有多少秒过期,-1表示永不过期,-2表示已过期; -
type key
:查看你的key是什么类型;
Redis 字符串(String)
-
set/get/del/append/strlen
:设置/获取/删除/追加/获取长度; -
incr/decr/incrby/decrby
:一定要是数字才能进行加减; -
getrange/setrange
:获取指定区间范围内的值/设置指定区间范围内的值; -
setex(set with expire) 键 秒 值/setnx(set if not exist)
:设置带过期时间的key,动态设置/只有在key不存在时才设置key的值; -
mset/mget/msetnx
:同时设置一个或多个键值对/获取所有(一个或多个)给定key的值/同时设置一个或多个键值对,当且仅当所有给定的key都不存在; -
getset
:先get然后立即set,返回key的旧值;
Redis 列表(List)
-
lpush/rpush/lrange
:左边插入/右边插入/显示范围; -
lpop/rpop
:左边移除一个元素/右边移除一个元素; -
lindex key index
:通过索引获取列表中的元素; -
llen
:获取列表的长度; -
lrem key
:删除N个value; -
ltrim key 开始index 结束index
:截取指定范围的值后再赋值给key; -
rpoplpush 源列表 目的列表
:移除源列表的最右边元素,插入到目的列表的最左边; -
lset key index value
:设置指定下标元素; -
linsert key before/after 值1 值2
:在列表某个已有值的前/后再添加具体值;
性能总结:
- List是一个字符串链表,left、right都可以插入添加;
- 如果键不存在,创建新的链表;
- 如果键已存在,新增内容;
- 如果值全移除,对应的键也就消失了;
- 链表的操作无论是头和尾效率都极高,但假如是对中间元素进行操作,效率是比较低的。
Redis 集合(Set)
-
sadd/smembers/sismember
:向集合中添加元素/查看集合中所有元素/判断一个元素在不在集合中; -
scard
:获取集合中元素个数; -
srem key value
:删除集合中元素; -
srandmember key 整数
:随机出几个数; -
spop key
:随机出栈; -
smove key1 key2 在key1里的某个值
:将key1里的某个值赋给key2; -
sdiff/sinter/sunion
:差集/交集/并集;
Redis 哈希(Hash)
-
hset/hget/hmset/hmget/hgetall/hdel
:设置/获取/设置多个/获取多个/获取所有/删数; -
hlen
:哈希中元素的个数; -
hexists key 在key里面的某个值的key
:判断一个key是否存在; -
hkeys/hvals
:获取所有的key/获取所有的val; -
hincrby/hincrbyfloat
:增加; -
hsetnx
:不存在赋值,存在则无效;
Redis 有序集合(Zset,sorted set)
-
zadd/zrange
:添加/范围; -
zrangebyscore key 开始score 结束score
,‘(’为不包含,limit的作用是返回限制,limit 开始下标 数量
; -
zrem key 某score下对应的value值
:删除元素; -
zcard/zcount/zrank/zscore
:获取集合中元素个数/获取分数区间内元素个数/获取value在zset中的下标位置/按照值获得对应的分数; -
zrevrank key values值
:逆序获得下标志; -
zrevrange
; -
zrevrangebyscore key 结束score 开始score
;