1:五大类型和简单的数据结构
-
String 简单动态数组.
-
List 链表形成压缩链表(ziplist) 多个压缩链表形成快速链表 (quickList).
-
Set hash类型 原理和JAVAHashMap是一样 每个元素作为key,所有的value指向同一个值.
-
hash hash.
-
Zset 跳表.
-
-
什么是事务 Redis在执行命令时,原子性表现在执行单条命令,不会被打断. 但是不保证一个客户端的命令在执行时,不会被其他 客户端的命令打断. Redis的事务就是控制,执行一个客户端的多个命令时,不会被其他客户端的命令插队.
-
-
-
怎么控制事务
-
将多个命令放入一个队列中,统一执行
-
分为组队阶段和执行阶段
-
multi 开始组队
-
exec 执行对象
-
discard 取消组队
-
组队期间报错, 执行失败
-
组队成功,执行出错,继续执行,不会停止
-
4.事务的特点
- 只是防止插队,不保证原子性
- 没有提交,也没有回滚
- 没有ACID
5.- Redis事务锁
- Redis锁机制是乐观锁
- 悲观锁 悲观的认为数据的安全问题一直存在,上锁后,只有当前线程操作数据,其他线程等待 多个读取线程是应该同时进行,但是悲观锁仍然让其他线程等待
- 乐观锁 乐观的认为数据的安全问题几乎不存在,上锁后,也不是真正的锁定数据,是记录数据的状态(版本号) , 只有真正执行的时候,会校验数据还是不是当时的状态(版本号) 如果是,则执行,如果不是,则放弃执行, 多个读取操作应该同时进行,乐观锁允许让这些操作同时执行 效率比较高
以上是笔者在学习redis时整理的redis中核心的内容.