Redis学习总结(2)之Redis数据结构

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/jokeMqc/article/details/87929037

一、前言

Redis是一种高级的key-value存储系统,其中支持五中数据类型:

  1. 字符串(String)
  2. 字符串列表(list)
  3. 字符串集合(set)
  4. 有序字符串集合(sorted set)
  5. 哈希(hashes)

有关于可以,有几点需要注意的,1.key不要太长,尽量不要超过1024个字节,这不仅消耗内存,而且会降低查询效率。2.key也不要太短,太短的话,会降低可读性。3.在同一个项目中,key最好使用同一的命名格式。

二、数据结构-String

如果redis只使用string的话并且不适用持久化的话,那么redis和memcached就非常的类似了,这就说明string就是一个很基础的数据类型了。

例子:

另外我们还可以操作字符串进行数值操作

在进行数值操作的时候,redis会将字符串转为对应的数值。

并且由于incr、decr等操作具有原子性,所以我们可以完全利用redis的incr、decr、incrby等指令来实现原子计数的效果。假如,在某个场景,三个客户端对mynum进行incr操作,那么到最后mynum的值一定是5。不少网站就是利用这个特性来进行网站计数操作。

三、数据结构-List

Reids另外一个重要的数据结构叫做list,中文翻译为列表。

首先要明确一点,list在底层实现上不是数组,而是链表。所以对于一个拥有百万级别元素的list来说,在头部或者尾部插入一个元素的时间复杂度都是常数级别的,比如用LPUSH在lists的左侧插入一个新元素,用RPUSH在lists的右侧插入一个新元素,用LRANGE命令从lists中指定一个范围来提取元素。我们来看几个例子

List的使用场景就比较的多,比如:

  1. 我们可以利用list来实现一个简单的消息队列,可以确保先后顺序,不必像mysql那样需要通过order by来进行排序。
  2. 利用lrange还可以很方便的实现分页功能。

在博客系统中,每篇博客的评论可以放在一个list中。

四、数据结构-Set集合

Reids的集合是一种无序的集合,集合中的元素没有先后顺序,而集合的操作也很丰富,包括添加新元素、删除元素、取交集、并集、差集等。

向集合中插入元素:

对于集合的使用,也有一些常见的方式,比如,QQ有一个社交功能叫做“好友标签”,大家可以给你的好友贴标签,比如“大美女”、“土豪”、“欧巴”等等,这时就可以使用redis的集合来实现,把每一个用户的标签都存储在一个集合之中。

五、数据结构-Sorted Set(有序集合)

Redis不仅提供了无序的集合而且还提供了有序的集合。有序集合中的每一个元素都关联了一个序号(score),这便是排序的依据。

六、数据结构-Hash(哈希)

hashes存的是字符串和字符串值之间的映射,比如一个用户要存储其全名、姓氏、年龄等等,就很适合使用哈希。

到这里,redis的五种数据结构类型已经简单的介绍完毕了,让我们一起学习!一起进步!加油!

猜你喜欢

转载自blog.csdn.net/jokeMqc/article/details/87929037