redis数据结构使用场景

String---字符串

String 数据结构是简单的 key-value 类型,value不仅可以是String,也可以是数字。String在redis内部存储默认就是一个字符串,被redisObject所引用,当遇到incr,decr等操作时会转成数值型进行计算,此时redisObject的encoding字段为int
常规key-value缓存应用;
常规计数:微博数,粉丝数等。

  • 相关命令
SET key value    设置key=value
GET key          获得键key对应的值
GETSET key value  设置键的字符串值,并返回旧值
MGET key1 [key2 ...]  得到所有的给定键的值
SETNX key value   设置键的值,只有当该键不存在

hash类型

Hash是一个String类型的field和value之间的映射表,即redis的hash数据类型key(hash表名称)对应的value实际的内部存储结构为一个HashMap,因此Hash特别适合存储对象。相当于把一个对象的每个属相存储为String类型,将整个对象存储在hash类型中会占用更少内存。


redis数据结构使用场景_第1张图片
419EA80E-6184-4286-A384-865C49A2FF93.png

当前HashMap的实现有两种方式:当HashMap的成员比较少时Redis为了节省内存会采用类似一维数组的方式来紧凑存储,而不会采用真正的HashMap结构,这时对应的value的redisObject的encoding为zipmap,当成员数量增大时会自动转成真正的Hashmap,此时encoding为ht.

  • 应用场景
    用一个对象来存储用户信息,商品信息,订单信息等等。
  • 常用命令
  1. hset --- 设置key对应的hashMap中的field的value
  2. hget --- 获取key对应的hashMap中的filed的value
192.168.2.129:6379> hset myhash name zhangsan
(integer) 1
192.168.2.129:6379> hset myhash age 20
(integer) 1
192.168.2.129:6379> hget myhash name
"zhangsan"
192.168.2.129:6379> hget myhash age
"20"
192.168.2.129:6379>
  1. hgetall --- 获取key对应的HashMap中的所有field的value
192.168.2.129:6379> hgetall myhash
1) "name"
2) "zhangsan"
3) "age"
4) "20"
192.168.2.129:6379>

list类型

redis的list类型其实就是每个元素都是String类型的双向链表。我们可以从链表的头部和尾部添加或者删除元素。这样的List既可以作为栈,也可以作为队列使用。


redis数据结构使用场景_第2张图片
11E24F3D-ECC7-4CB4-91F4-94C1A0FC87A6.png
  • 应用场景
    如好友队列,粉丝队列,消息队列,最新消息排行等
  • 常用命令
  1. lpush --- 在key对应的list的头部添加一个元素
  2. lrange --- 获取key对应的list的指定下标范围的元素,-1表示获取所有元素。
  3. lpop --- 从key对应的list的尾部删除一个元素,并返回该元素。
192.168.2.129:6379> lpush newlist news1 news2 news3
(integer) 3
192.168.2.129:6379> lrange newlist 0 -1
1) "news3"
2) "news2"
3) "news1"
192.168.2.129:6379> lpop newlist
"news3"
192.168.2.129:6379> lrange newlist 0 -1
1) "news2"
2) "news1"
192.168.2.129:6379>

Set集合

Redis集合(Set类型)是一个无序的String类型数据的集合,类似List的一个列表,与List不同的是Set不能有重复的数据。实际上,Set的内部是用HashMap实现的,Set只用了HashMap的key列来存储对象。

  • 使用场景
    集合有取交集、并集、差集等操作,因此可以求共同好友、共同兴趣、分类标签等。
  • 常用命令
  1. sadd --- 在key对应的set中添加一个元素
  2. smembers --- 获取key对应的set的所有元素
  3. spop --- 随机返回并删除key对应的set中的一个元素

SortSet

SortSet顾名思义,是一个排好序的Set,它在Set的基础上增加了一个顺序属性score,这个属性在添加修改元素时可以指定,每次指定后,SortSet会自动重新按新的值来旭。

  • 使用场景
    如按时间排序的时间轴

你可能感兴趣的:(redis数据结构使用场景)