本篇博客介绍一下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;