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;
要点:
- redis中的字符串并非c结构中的字符串,它是⼀个⼆进制安全的字符串(不会被特殊字符
(\0)隔断);所以string中长度包含信息来标识字符串的⻓度; - map 采⽤红黑树(平衡二叉搜索树)实现,⽽ unordered_map 采⽤哈希表实现;更接近
redis dict 的实现;redis 中的 dict 也是采⽤哈希表实现的; - 红⿊树是有序的树结构,查找需要⽐较 key,时间复杂度为 o(logn);⽽哈希表是⽆序的,查找不需要⽐较 key,因为它先将 key 通过 hash 函数⽣成整数,然后映射到数组当中,它的时间复杂度为o(1);
- set ⼀般采⽤有序的结构来实现,因为集合中可能涉及到交、并、差集的运算
- 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>>

百度热榜



版权声明:本文为mz474920631原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。