redis和memcached两种缓存,个人觉得redis更好用,因为它不仅提供了丰富的数据类型,还能保证数据的持久性,下面就来简单的介绍一下redis中常用的几种数据类型。
1. 字符串类型(string)
这是redis中最基本的类型,也是最常用的类型,跟memcached一样,即一个key对应一个值这种。操作也很简单,常用操作命令有get、set、del等。
2. 链表类型(list)
链表类型有点类似于编程语言中的数组一样,可以用一个key存一组数据进去。其实list类型就是一个双向链表,通过lpush、lpop、rpush、rpop这四个命令来向链表的头部插入、移除、尾部插入、移除,这使得list即可以用作栈,也可以用作队列。如下图所示的情景:
redis中list队列
3. 无序集合类型(set)
redis中的set是string类型的无序集合,set元素最大可以包含2的32次方-1个元素。利用set集合类型,我们可以快速取出n个key之间的并集、交集、差集等,从而轻松解决mysql等数据库不容易实现这种运算的缺陷。应用场景:取出两个QQ号中的共同的好友数。
4. 有序集合类型(sorted set)
和set一样,sorted set也是string类型元素的集合,是一个没有重复元素的字符串集合。因为元素是有序的,所以使用有序集合你可以以非常快的速度(O(log(N)))添加,删除和更新元素,它也很擅长排序。应用场景:获取所有用户投票数最高的前10名,等等。
5. 哈希类型(hash)
hash数据类型存储的数据与mysql数据库中存储一条记录极为相似,其存储了字段和字段值的映射,但字段值只能是字符串,不支持其他类型。每一个哈希可以存储超过2的32次方-1个字段-值对。应用场景:存储用户的基本信息,等等。
总结:只有熟练掌握redis各种数据类型的特点之后,才能更好的应用到实际项目中。虽然redis的效率非常高,但是我们还是得非常清楚的理解每种数据类型适合的应用场景,这样才能将redis的优势发挥到极致