31-redis

31-redis

最开始使用memcache做缓存数据库,但是它不能进行数据持久化,而是放在内存中

  • 持久化:把数据存储在磁盘上
  • 内存中的数据的特点:一旦断电,数据就会丢失

使用redis做缓存数据库,可以把数据存在内存中,加快我们读取数据的速度,同时,它可以定时去同步数据到磁盘,进行内存数据持久化。它还有个重大优势:缓存数据库之间可以自动同步

功能强大,但是比较复杂,所以在使用过程中也存在一定的问题。

性能测试人员需要了解redis的使用,原理,存在的问题,发现问题,如何给出调优建议。

redis介绍

  • 非关系性数据库「Nosql」「Not only sql」
  • key-value形式的非关系性数据库。一个key,对应value

非关系型数据库

  • 没有声明查询语言
  • 没有预定义的模型
  • 非机构化,不可预知的数据
  • 高性能,高可用性,高可伸缩性

NoSQL分类

  • 列存储:Hbase
  • 文档存储:Mongodb
  • key-value存储:redis

value的类型

典型的有五种

  • 字符串
  • 列表
  • 哈希
  • 集合
  • 有序集合

doctor安装redis

1
docker run -itd --name you_redis_name -p 6379:6379 redis redis-server --appendonly yes

连接redis

RemoteDictionaryServer(Redis)

https://gitee.com/qishibo/AnotherRedisDesktopManager/releases

redis连接

常用操作

查看redis的所有配置参数

在客户端模式下执行

1
2
config get *
config set key value

插入数据

字符串

1
2
set strkey value
get strkey

字符串

列表

1
2
3
lpush listkey zhongxin
lpush listkey 测试游记
lrange listkey 0 1

列表

哈希

1
2
hset hxkey filed1 hashvalue1 filed2 hashvalue
hget hxkey filed2

哈希

集合

1
2
sadd zsetkey 1 redis
smembers zsetkey

集合

自带性能测试工具

1
redis-benchmark -n 10000 -q

命令

redis穿透、雪崩、击穿

穿透

key查不到(例如 id为负数),去存储层数据库中获取,失去了缓存意义

解决办法:程序层做逻辑检查

雪崩

redis缓存数据库中大量的key在同一时间失效,请求这些key获取不到数据,从而去获取更底层的DB数据库

解决办法:设置key失效时间随机

击穿

持续长时间大并发请求某一个热点key,在key失效的瞬间,就突破了缓存

 wechat
欢迎您扫一扫上面的微信公众号,订阅我的博客!
您的支持将鼓励我继续创作!