type
status
date
slug
summary
tags
category
icon
password
comment
redis测试
五大数据类型
redis是单线程的,可以用作数据库,缓存和消息中间件MQ
官方表示:redis是基于内存操作的,CPU不是redis性能瓶颈,redis的瓶颈是根据机器的内存和网络带宽,既然可以使用单线程来实现,就使用单线程了!
为什么默认端口是6379:粉丝效应
redis默认有16个数据库,默认使用的是第0个数据库
可以使用select进行切换
Redis-key
String(字符串)
数据结构是想通的!
String类型使用场景:value除了是字符串还可以是数字
- 计数器
- 统计多单位数量
- 粉丝数
- 对象缓存存储
List(列表)
在redis的list中,可以做成栈,队列,阻塞队列!redis不区分大小写命令
list内部可以存在重复值
注:只有push和pop才分左右,其余前置l均为list的意思
小结
- 实际上是一个链表
- key不存在就创建,存在则新增
- 如果移除了所有值,也就是空链表,则代表不存在
- 在两边插入或改值时,效率最高,中间元素效率会低一点。
Set(集合)
set是一个无序不重复集合
微博, A用户将所有关注的人放在一个set集合中
!将它的粉丝也放在一个集合中!
共同关注,共同爱好,二度好友,推荐好友!(六度分割理论)
Hash(哈希)
map集合,key-map
hash存变更数据 user name
age,尤其是用户信息之类的,经常变动的信息,hash更适合于对象的存储,String更适合字符串的存储!
zset(有序集合)
案例思路: set排序,存储班级成绩表,工资排序表,排行榜
普通消息, 1, 重要消息, 2, 带权重进行判断!
三种特殊数据类型
geospatial(地理位置)
朋友定位,附近的人,打车距离计算
geoadd (添加地理位置)
geopos (获取)
geodist (获取两点距离)
单位:
- m for meters.
- km for kilometers.
- mi for miles.
- ft for feet.
georadius
附近的人(获取所有附近的人的地址,定位!)
georadius 经度 纬度 半径 单位
withcoord 显示他人的定位信息
georadiusbymember
geohash - 返回一个或多个位置元素的个geohash表示
该命令返回11个字符的geohash字符串
geo 底层实现原理就是zset,可以使用zset命令操作geo!
Hyperloglog
基数(一个集合中不重复的元素)
简介:用于做基数统计的算法
优点:占用内存固定,
2^64个不同的元素的基数,只需要废12KB的内存,从内存角度看Hyperloglog是首选
0.81%错误率!统计UV任务是可以忽略不计的。
允许容错,一定可以使用Hyperloglog
不允许容错,就使用set或者自己的数据类型即可
Bitmaps
按位存储
统计疫情感染人数:000000110101010
统计用户信息:活跃,不活跃!登录,未登录!365打卡!两个状态的都可以使用bitmaps
Bitmaps位图,数据结构!都是操作二进制位来进行记录的,只有0和1两种状态
测试
redis的事务
==redis的单条命令可以保证原子性(要么同时成功,要么同时失败),但是redis的事务不行==
redis事务本质:一组命令的集合。一个事务中的所有命令都会被序列化,在事务的执行过程中,会按照顺序执行。
一次性,顺序性,排他性。执行一系列的命令!
==redis事务没有隔离级别的概念==
所有命令在事务中,并没有被直接执行!只有发起执行命令的时候才会执行!
redis事务:
- 开启事务(multi)
- 命令入队(……)
- 执行事务(exec)
正常执行事务
放弃事务
编译型异常(代码有问题,命令有错),事务中所有的命令都不会被执行
运行时异常(例如:1/0),如果事务队列中存在语法性错误,那么执行命令的时候,其他命令是可以正常执行的。错误命令会抛出异常。
监控 watch
悲观锁:
- 很悲观,认为什么时候都会出现问题,无论做什么都会加锁!
乐观锁:
- 很乐观,认为什么时候都不会出现问题,所以不会上锁!更新数据的时候去判断一下,在此期间是否有人修改过这个数据。
- 获取version,更新的时候去比较version
监视测试
测试多线程修改值,使用watch相当于redis的乐观锁操作
- 作者:obsidianlyg
- 链接:obsidianlyg.top/article/d1c2f371-597c-4be5-afee-6f1bef6d5583
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
相关文章