Redis 入门 2

基础知识

  1. 默认有16个数据库,可见配置文件
  • 根据索引选择数据库,第0到15号数据库;默认为0号
    select 0-15
  • 查看数据库大小
    dbsize
  • 清除所有数据库的内容
    flushall
  • 清除当前数据库的内容
    flushdb
  1. Redis特点
  • 基于内存操作,单线程的,瓶颈是内存和网络带宽
  • 将所有数据放在内存中,单线程最快(没有多线程的上下文切换,多次读写都在一个CPU上)

Redis操作

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