redis是一种key values形式的非关系型数据库,通过内存存储,也可以把数据持久化到本地文件中。
redis支持丰富的数据类型,String,list,set,zset,hash,下面说一下各种数据类型的应用场景。
String:
string 类型进行数据存储的时候主要有get,set,incr(increase加一递增),decr(decrease减一递减)等操作。incr等指令本身具有原子操作,所以我们可以利用redis的incr,incrby,decr,decrby来实现原子计数操作。例如:在某场景下面有三个用户同事访问,然后对其进行加一操作,那么最后的值一定会加三。可以利用这一特性来实现业务上的统计数据的需求。
Llists:
redis的list底层不是数组,而是链表。lists常用的操作有lpush(左边插入),rpush(右边插入),lrange(取数据,lranger key 开始下标 结束下标)。每往lists中插入一条数据,这条数据将作为下标为0的数据。栈后进先出的那种形式。
例如:我们可以利用list来实现一个消息队列,而且可以确保先后顺序,可以利用lrange来实现分页功能。在博客系统中,每篇博文的评论都可以放在单独一个list中。
set:
reids的集合,是一种无序的集合,集合中的元素没有先后顺序。
集合中相关的操作也很丰富,如添加元素,删除已有元素,取交集,取并集,取差集。
例如:QQ有一个社交功能叫“好友标签”,大家可以给你的好友贴标签,这时候就可以用redis集合来实现,把用户的每个集合存在一个集合中。
如果要查看共同好友,也可以把好友存在集合中,比较交集。
zset:
redis的有序集合,每个集合都提供了一个序号,赭石排序的依据。
例如:暂无。
hash:
hashes存的是字符串和字符串之间的映射,比如一个用户要存储其全名,姓氏,年龄等,就适合用hash。hash比较像map。