五大数据类型和指令

  • Redis
  • 数据库
  • NoSql
  • 非关系型数据库
  • 高并发
大约 4 分钟

Redis五大数据类型和结构

官方文档:https://redis.io/commandsopen in new window

中文文档:http://redisdoc.com/open in new window

五种常用:

  • string
  • hash
  • list
  • set
  • zset(sorted_set)

1. string

特点:二进制安全,可以包含任何数据,包括图片或者序列化对象

一个 Redis 中字符串 value 最多可以是 512M

指令功能
set/get设置/获取键值
append追加到原值末尾
strlen获取值的长度
setnx当key不存在时设置key的值
setex key seconds val设置键值并设置失效时间
incr/decr为key储存的数字值加上一/减一
incrby/decrby数字值增减,自定义步长
mset/mget同时设置/获取一个或多个 key-value 对
getrange key start end获得值的范围(类似substring)
setrange key offset val从偏移量offset开始, 用val参数覆写(overwrite)键key储存的字符串值
getset key value以新换旧,设置了新值同时获得旧值

2. list

list 类型, 保存多个数据,底层使用双向链表存储结构实现

指令功能
lpush/rpush value[value ...]lpush是左边表头插入,rpush是右边表尾插入
lpushx/rpushx key value插入表头/表尾,当且仅当key存在并是一个列表
lrange key start end返回列表 key 中指定区间[start,end]内的元素(-1代表最后一个元素)
lindex key index按照索引下标获得元素(从左到右)
llen key获得列表长度
linsert key before val newvalue<value> 的前面插入 <newvalue>
lrem key  n value从左边删除 n 个 value(从左到右)
lset key index value将列表 key 下标为 index 的值替换成 value

list最佳实践:

  • redis应用于具有操作先后顺序的数据控制
  • 应用场景如:系统通知,按照时间顺序展示,将最近的通知列在前面

3. set

set 提供的功能与 list 类似是一个列表的功能,特殊之处在于 set 是可以自动排重的, 即值是不允许重复的

指令功能
sadd key member [member...]将一个或多个member元素加入到集合key当中,已经存在于集合的member元素将被忽略
smembers key返回集合key中的所有元素 <不保证顺序>
sismember key value判断集合 <key> 是否为含有该 <value> 值,有 1,没有 0
scard key返回该集合的元素个数
srem key val1 val2 ...删除集合中的某个元素
spop key随机从该集合中吐出一个值
srandmember key n随机从该集合中取出 n 个值。不会从集合中删除
smove source destination value把集合中一个值从一个集合移动到另一个集合
sinter key1 key2返回两个集合的交集元素
sunion key1 key2返回两个集合的并集元素
sdiff key1 key2返回两个集合的差集元素(key1 中的,不包含 key2 中的)

4. hash

Redis hash 是一个键值对集合,hash 适合用于存储对象, 类似 Java 里面的Map<String,Object>

指令功能
hset key feild val将哈希表 hash 中域 field 的值设置为value, 如果feild已经存在就覆盖
hget key field<key> 集合 <field> 取出 value
hmset/hmget批量设置/取出
hexists key field查看哈希表 key 中,给定域 field 是否存在
hkeys key列出该hash集合中所有field
hvals key列出该 hash 集合的所有 value
hincrby key field increment为哈希表 key 中的域 field 的值加上增量
hsetnx key field vlaue将哈希表 key 中的域 field 的值设置为 value ,当且仅当域 field 不存在

5. Zset(sorted set)

  • Redis 有序集合 zset 与普通集合 set 非常相似,是一个没有重复元素的字符串集合
  • 不同之处是有序集合的每个成员都关联了一个评分(score),这个评分(score)被用来按照从最低分到最高分的方式排序集合中的成员。集合的成员是唯一的,但是评分可以重复
指令功能
zadd key score1 val1 [score2 val2 ...]将一个或多个 member 元素及其 score 值加入到有序集 key 当中
zrange key start end [WITHSCORES]返回有序集 key 中,start,stop之间的元素,带 WITHSCORES,可以让分数一起和值返回到结果集
zscore key member返回有序集 key 中,成员 member 的 score 值
zrangebyscore key
min max [withscores] [limit offset count]
返回有序集 key 中,所有 score 值介于min 和 max 之间(包括等于 min 或 max )的成员。有序集成员按 score 值递增(从小到大)次序排列
zrevrangebyscore key
max min [withscores] [limit offset count]
同上,改为从大到小排列
zincrby key increment value为元素的 score 加上增量
zrem key value删除该集合下,指定值的元素
zcount key min max统计该集合,分数区间内的元素个数
zrank key value返回该值在集合中的排名,从 0 开始
上次编辑于: