Redis入门指南 阅读笔记 (简单整理)
-
Redis核心数据结构:
-
String (字符串/二进制串)
-
最基本的数据类型
-
最大大小为512MB
-
所有的数据类型的基础都是二进制串
-
-
HashTable (散列表)
-
字段到二进制串的映射, 其中二进制串不可嵌套其他类型
-
散列表的最大大小为
2^32-1
个元素 -
一般用于存放代码中的结构体对象, 可以保证对每个成员的原子操作
-
-
List (列表)
-
内部结构为双向链表, 头尾操作效率高, 随机访问效率低
-
最长上限也是
2^32-1 (4,294,967,295)
-
用于实现队列或者栈
-
-
Set (集合/无序集合)
-
是键值对中值为空的散列表
-
上限
2^32-1
-
用于进行集合操作, 以及判断元素是否存在
-
-
SortedSet (有序集合)
-
由跳跃表, 散列表结合存储的数据模式. 其基于每个对象的
score
进行排序, 支持score
重复 -
对于有序集合的随机访问效率较列表更高, 可以通过调整元素
score
大小控制元素位置
-
-
-
Redis线程模型: 单线程模型
-
Redis键值的一般命名格式:
<对象类型>:<对象id>:<对象属性>
-
Redis的一般功能:
-
数据库
-
缓存
-
消息队列
-
-
Redis的进阶功能:
-
事务:
MULTI, EXEC, WATCH
三个命令 -
过期时间:
EXPIRE, TTL, PERSIST
-
排序:
使用有序集合, SORT, BY, GET, STORE
-
消息通知:
SUBSCRIBE, UNSUBSCRIBE, PSUBSCRIBE
-
对于内存消耗的优化:
使用较短的键值, 进行Redis内部编码的设置
-
Redis脚本:
Lua脚本
, 通过综合基本命令形成自定义的命令, 其运行是原子性的 -
内存数据持久化:
RDB
备份数据本身;AOF
备份命令操作
-
-
Redis集群:
-
简单集群: 只是简单的读写分离, 通过RDB进行复制初始化, 通过AOF进行请求的异步同步. 出现宕机需要手动处理
-
哨兵集群: 将简单集群中的宕机的手动处理通过哨兵完成, 进行自动的节点角色转换, 以及数据的同步
-
Redis-cluster集群: 解决主从复制的横向拓展问题. 使用哈希槽进行数据的分配, 以和单体相近的性能适应大数据量环境
-
-
Redis安全:
-
Redis需要部署在可信环境, 不能直接从外网访问, 需通过软件进行隔离
-
对Redis设置密码进行授权访问
-
对于Redis的命令进行重命名以及禁用, 限制访问来源以及访问权限
-
-
Redis服务器与客户端的交流协议:
-
简单协议: 直接是命令行的输入进行通信
-
unified request protocol
-