redis

Redis

Redis概述

  • NoSQL数据库
  • 使用内存作为存储介质
  • 采用KV键值对保存数据
  • 性能优越(GET(读):110000次/秒 ,SET(写):81000次/秒)

使用

  1. 启动服务器:redis-server redis.windows.conf
  2. 启动客户端:redis-cli.exe
  3. 桌面管理工具:RedisDesktopManager
  4. 设置密码:redis.windows.conf配置文件中设置requirepass(大约443行)

数据类型

  • 字符串(String)
  1. set 键 值
  2. get 键
  • 哈希(Hsah)
  1. hset 键 字段 值:字段对应值
  2. hmset 键 字段1 值1 字段2 值2 …
  3. hget 键 字段:取值
  4. hmget 键 字段1 字段2…
  5. hgetall 键
  6. 容量:2的32次方(40亿)
  • 列表(Lsit)
  1. Lpush 键 值1 值2 …
  2. lrange 键 开始下标 结束下标
  3. 容量:2的32次方(40亿)
  • 集合(Set)
  1. sadd 键 值1 值2 …
  2. smembers 键
  • 有序集合(Zset)
  1. zad 键 分数 1 值1 分数2 值2 …
  2. zrange 键 开始下标 结束下标
  3. zrangebyscore 键 开始分值 结束分值

常用命令

  1. keys * ----- 获取所有的键
  2. dbsize ----- 获取键总数
  3. exists key 键 ----- 查询键值是否存在
  4. del key 键 ----- 删除键
  5. type 键 ----- 查询键类型
  6. ttl key / pttl key ----- 查询key的生命周期(秒,毫秒)*** -1即是永不过期***
  7. expire/pexpire key seconds/milliseconds ----- 设置生命周期时间
  8. persist 键 ----- 设置永不过期
  9. rename 键 新键 ----- 更改键名称

常见问题

  • Redis为什么这么快?
  1. 内存作为存储介质
  2. KV键值对的结构简单,性能开销小
  3. 单线程
  4. 底层使用C/C++开发,数据库与底层兼容性高
  • 缓存穿透
  1. 所发起的请求缓存和数据库都无法提供反馈,无故消耗资源,攻击居多,例如:id = -1
  2. 解决:(1). 接口层效验,鉴别数据是否符合数据库要求,例如:id<=0拦截 (2).缓存根据请求设置key - value为 key - null 指定有效时长
  • 缓存击穿
  1. 请求的反馈缓存没有,数据库能够响应,如果存在高并发的击穿,数据库压力瞬间增大
  2. 解决:(1). 设置热点数据永不过期 (2). 定时任务更新缓存数据 (3). 加互斥锁(保证单线程访问数据库)
  • 缓存雪崩
  1. 缓存数据在极短的时间大批量到过期时间,查询更新很可能使得数据库宕机
  2. 解决:(1). 缓存数据的过期时间设置随机,避免同一时间大量数据过期现象发生 (2). 数据分布式部署,热点数据均匀分布,减低 (3). 根据需要可以设置热点数据永不过期

应用场景和注意事项

场景:
  • 缓存热点或常用数据(评论)
  • 消息对列
  • 高速读写场景(现场投票,实时显示)
注意:
  • 业务命中率低,没必要使用Redis
  • 业务数据读写多,与数据库交互频繁,没必要使用Redis
  • 业务数据庞大,对内存造成巨大压力,没必要使用Redis
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值