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的乐观锁操作
相关文章
通过JSONObject实现传参与分页逻辑
Lazy loaded image
关于UniApp使用的个人笔记
Lazy loaded image
java使用zxing生成二维码
Lazy loaded image
关于d3js生成节点画布的个人笔记
Lazy loaded image
关于服务器被入侵的个人日志(┬┬﹏┬┬)
Lazy loaded image
微信公众号绑定后台服务器已有账号
Lazy loaded image
Jenkins安装及使用移动应用测试
Loading...
obsidianlyg
obsidianlyg
最好的生活是:时光,浓淡相宜,人心,远近相安
最新发布
Beszel安装与监控报警
2025-1-20
mongodb
2024-9-13
vim
2024-9-13
WallPaper
2024-9-13
解决vim中文乱码问题外加基本配置
2024-9-13
ranger常用命令
2024-9-13
公告
🎉NotionNext 4.1已经上线🎉
-- 感谢您的支持 ---
👏欢迎更新体验👏