基础知识
- 默认有16个数据库,可见配置文件
- 根据索引选择数据库,第0到15号数据库;默认为0号
select 0-15
- 查看数据库大小
dbsize
- 清除所有数据库的内容
flushall
- 清除当前数据库的内容
flushdb
- Redis特点
- 基于内存操作,单线程的,瓶颈是内存和网络带宽
- 将所有数据放在内存中,单线程最快(没有多线程的上下文切换,多次读写都在一个CPU上)
Redis操作
- key基本操作
- 5种基本数据类型命令
- String类型命令 适合字符串存储
- List类型命令 链表
- Set类型命令(值不能重复)
- Hash类型命令(Key-Value中value变为key-value,可以看作key-map)更适合对象的存储 ->用户数据
- Zset类型命令(有序set,score可以重复,成员不可重复) 加权场景
- 3种特殊类型命令
- geospatial类型(基于Zset封装的,可以使用他的命令操作)
- hyperloglog类型 用于基数(不重复数)统计 允许容错率
- bitmap 操作二进制位 只有两种状态 setbit key bit status
- 事务
- 单条命令保证原子性,事务不保证原子性
- 本质:一组命令的集合;一个事务中的命令都被序列化,按顺序执行
- 特性:一次性、顺序性、排他性
- 事务没有隔离级别的概念,只有执行事务时才会按顺序执行事务中的命令
- 执行步骤
- 开启事务 multi
- 命令入队
- 执行事务 exec
- 放弃事务 discard 从multi后的命令都不会执行
- 原子性问题
- 编译型错误:命令有误, 事务中所有命令都不会执行
- 运行时异常:运行时出现错误,事务中其他命令会正常执行,异常命令报错(不保证原子性)
- 可以实现乐观锁
- 乐观锁:认为什么都是安全的,不会加锁;事务开始前获取值,执行时再获取与version比对,如果一直才执行
- 悲观锁:都会加锁
- Redis事务开启前,使用watch命令监视某个变动的值,当作乐观锁;如果其他线程修改了值,则事务执行会失败;
- 解除监视命令unwatch; 然后重新获取值,再执行事务
posted @
2022-02-10 12:05
蓝天可乐
阅读(
22)
评论()
编辑
收藏
举报