Redis数据存储

Posted RWCC

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Redis数据存储相关的知识,希望对你有一定的参考价值。

redis数据

一、redis是什么

redis是内存数据库、数据结构(string,list,set,zset(排序集合),hash)数据库以及kv数据库。

二、redis理解

操作 redis 就相当于操作 stl unordered_map

template class<T>;
unordered_map<string, T>

//unordered_map 和 map?
//map 红⿊树 时间复杂度 logn
//unordered_map hashtable 时间复杂度 o(1)

T ⽀持 string,list, set, zset, hash

#include <unordered_map>
#include <unordered_set>
#include <set>
#include <string>
using namespace std;
// string
unordered_map<string, string> strings;
// list
unordered_map<string, list<string>> lists;
// set order by
unordered_map<string, unordered_set<string>> sets;
// zset
unordered_map<string, skiplist<string, string>> zsets;
// hash 
unordered_map<string, unordered_map<string, string>> hashes;

要点:

  1. redis中的字符串并非c结构中的字符串,它是⼀个⼆进制安全的字符串(不会被特殊字符
    (\\0)隔断)
    ;所以string中长度包含信息来标识字符串的⻓度;
  2. map 采⽤红黑树(平衡二叉搜索树)实现,⽽ unordered_map 采⽤哈希表实现;更接近
    redis dict 的实现;redis 中的 dict 也是采⽤哈希表实现的;
  3. 红⿊树是有序的树结构,查找需要⽐较 key,时间复杂度为 o(logn);⽽哈希表是⽆序的,查找不需要⽐较 key,因为它先将 key 通过 hash 函数⽣成整数,然后映射到数组当中,它的时间复杂度为o(1);
  4. set ⼀般采⽤有序的结构来实现,因为集合中可能涉及到交、并、差集的运算
  5. skiplist 是⼀个多层级的有序链表,并且⽅便进⾏范围查询;与B+树实现的功能类似,但⽐B+效率要高;

三、redis操作


四、redis数据存储


redis数据存储规则

string结构以及应用

相当于操作:unordered_map<string, string>
unordered_map<key, value>

主要命令以及应用:

设置单值

存储对象

累加器

分布式锁

list结构以及应里插用


quicklist 当中的节点 存储的就是 压缩列表

相当于操作 unordered_map<string, list<string>>

unordered_map<key, list<value>>

栈(先进后出 FILO)

队列(先进先出 FIFO)

阻塞队列(blocking queue)


朋友圈消息推送

hash结构以及应用

相当于操作 unordered_map<string, unordered_map<string, string>>

unordered_map<key, unordered_map<field, value>>

存储对象



购物车



set结构以及应用

相当于操作 unordered_map<string, unordered_set<string>>

unordered_map<key, unordered_set<member>>

抽奖

共同关注

可能认识的人

zset结构以及应用

相当于操作 unordered_map<string, skiplist<string, string>>

unordered_map<key, skiplist<member, score>>

百度热榜



以上是关于Redis数据存储的主要内容,如果未能解决你的问题,请参考以下文章

Redis数据存储

redis存储数据

Redis4.0数据库:Redis4.0之持久化存储(下)

如何查看Celery存储在redis里面的结果

NoSQL数据库之redis持久化存储

Redis内存使用优化与存储