redis常用的数据结构有
string 是 Redis 的基本的数据类型,一个 key 对应一个 value。string 类型是二进制安全的,Redis的string可以包含任何数据,比如图片或者序列化的对象,一个redis中字符串value最多可以是512M。
value可以存储json格式,数值型等。
string使用场景一般是存储简单的键值类型。比如用户信息,登录信息,配置信息等。还有一种用得比较多的是string的incr/decr操作,即自增、自减操作。调用它是原子性的,无论调用多少次,都一一计算成功。例如需要增减库存的操作。
尽管string的value可以存储很大,甚至500多MB的容量。但是在性能上来说,我们见谅存储value的值不要超过1M。
hash是一个键值对集合,是一个string类型的key和value的映射表,key还是key,但是value是一个键值对(key-value)。类比于JAVA里面的 Map<String, Map<String, Object>>集合。
比如需要有两层key的应用常见,通过删除一个key可以删除所有内容。例如一个商品有很多规格,规格里面有不同的值。
需要注意的是,经过测试,在性能上来说一般hash里面的第二层key,不要超过200个为佳。尽管hash里面的key-value能达到500多MB的存储容量。
list列表,它是简单的字符串列表,按照插入顺序排序,可以添加一个元素到列表的头(左边)或者尾部(右边),它的底层实际上是个链表。
list可以使用左推、左拉、右推、右拉的方式。所以你可以使用list作为集合存储,比如存储某宝商铺里面的所有商品。
也可以用作轻量级别的队列来使用。左推左拉、右推右拉。
需要注意的是尽管redis可以使用推拉的队列模式,但是一定要注意场景。因为redis的队列是一种轻量级别的,没有队列重试、队列重放机制。消费完队列消息在redis代表已经删除了。
Redis的set是string类型的无序集合。
如保存一些标签的名字。标签的名字不可以重复,顺序是可以无序的。
需要注意的是使用set一定不要存储大量的数据。value的值不宜过大,并且集合数量不宜过大。几百个集合的值,value不超过1MB为佳。
zset(sorted set有序集合),和上面的set数据类型一样,也是string类型元素的集合,但是它是有序的。
sortset的使用场景一般是排行榜之类的场景