小白的Redis小结

Redis是什么?都有哪些使用场景?

Redis是一个使用c语言开发的高速缓存数据库
Redis是一个Key-Value的存储系统.它支持的数据类型相对较多如string,list,set,zset,hash
Redis是一个Key-Value的高性能数据库.Redis对部分场合的数据库起到了很好的补充作用
比如:缓存近期热帖,缓存文章详情,记录会话信息

Redis有哪些功能?

数据缓存功能, 分布式锁功能 支持数据持久化 支持事务 支持消息队列

Redis 和 memcache 有什么区别?

存储方式: memcache 把数据全部存在内存中,断电后会挂掉,数据不能超过内存大小
Redis 有部分存在硬盘上,这样能保证数据的持久化
数据支持类型: memcache 对数据类型支持相对简单,
Redis有复杂的数据类型
底层模型不同:他们之间底层实现以及客户端之间通信的应用协议不一样,redis构建了自己的vm机制,因为一般的系统调用函数的话,会浪费一定的时间去移动和请求
value值大小不同: redis最大可达1GB,memcache只有1MB

Redis为什么是单线程的?

因为cpu不是Redis的瓶颈,redis的瓶颈最有可能是机器内存或者网络带宽.
既然单线程容易实现,又不会成为瓶颈 ,那么就顺理成章的采用单线程的方案了
关于Redis的性能,官方网站也有,普通笔记本轻松处理每秒几十万的请求,而且单线程并不代表慢,nginx 和 node.js 也都是高性能单线程的代表.

什么是缓存穿透?怎么解决?

缓存穿透:指查询一个一定不存在的数据,由于缓存是不命中时需要从数据库查询,查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到数据库去查询,造成缓存穿透.
解决方案: 如果查询返回的数据为空(不管是数据不存在,还是系统故障),我们就把这个结果进行缓存,但他的过期时间会很短,最长不超过五分钟

Redis支持哪些java客户端?

Redisson,jedis,lettuce等…
Jedis和Redisson有哪些区别?
Jedis:提供了比较全免得Redis命令的支持.
Resisson:实现了分布式和可扩展的java数据结构.与jedis相比Redisson的功能相对简单.不支持排序,事务,管道,分区等…

怎么保证缓存和数据数据的一致性?

合理设置缓存过期时间.
新增,更改,删除数据库操作时同步更新Redis,可以使用事务机制来保证数据一致性
Redis持久化方式有几种
RDB:指定的时间间隔能对数据进行快照存储
AOF:每一个收到的写命令都通过write函数追加到文件中

Redis如何做内存优化?

尽量使用Redis的散列表,把相关信息放到散列表里存储,而不是把每个字段单独存储,这样可以有效地减少内存使用.比如将web系统的用户对象,应该放到散列表里面在整体存储到Redis,而不是把用户的姓名,年龄,密码,邮箱等字段分别设置key’进行存储

Redis的淘汰策略有哪些?

Volatile -lru:从已设置过期时间的数据集中挑选最近最少使用的数据淘汰
Volatile-ttl:从已设置过期时间的数据集中挑选将要过期的数据淘汰
Volatile-random:从已设置过期时间的数据集中任意选择数据淘汰
Allkeys-lru:从数据集中挑选最近最少使用的数据淘汰
Allkeys-random:从数据集中任意选择数据淘汰
No-enviction:禁止驱逐数据

Redis常见的性能问题有哪些?该如何解决?

主服务器写内存快照,会阻塞主线程的工作,当快照比较大时对性能影响非常大,会间断性暂停服务,所以主服务器最好不要存快照
Redis主从复制的性能问题,为了主从复制的速度和连接的稳定性,主从库最好在同一个局域网内

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值