Redis 常见问题

Redis 常见问题 总结

1.redis 是什么?都有哪些使用场景?
2.redis 有哪些功能?
3.redis 和 memecache 有什么区别?
4.redis 为什么是单线程的?
5.什么是缓存穿透?怎么解决?
6.redis 支持的数据类型有哪些?
7.redis 支持的 java 客户端都有哪些?
8.jedis 和 redisson 有哪些区别?
9.怎么保证缓存和数据库数据的一致性?
10.redis 持久化有几种方式?
11.redis 怎么实现分布式锁?
12.redis 分布式锁有什么缺陷?
13.redis 如何做内存优化?
14.redis 淘汰策略有哪些?
15.redis 常见的性能问题有哪些?该如何解决?

解答:

-1-

Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、
set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。
适用场景:数据高并发的读写,海量数据的读写,对扩展性要求高的数据
使用场景:
1.配合关系型数据库做高速缓存
-(1)缓存高频次访问的数据,降低数据库io
例如:Select 数据库前查询redis,有的话使用redis数据,放弃select 数据库,没有的话,select 数据库,然后将数据插入redis
-(2)分布式架构,做session共享
2.可以持久化特定数据
3.(1)利用zset类型可以存储排行榜 (2)利用list的自然时间排序存储最新n个数据
4.计数器 命令:INCRBY -由于单线程,可以避免并发问题,保证不会出错
5.队列 -可以直接使用Redis的List实现消息队列,两个指令lpush和rpop或者rpush和lpop
6.分布式锁与单线程机制 -秒杀系统,基于redis是单线程特征,防止出现数据库“爆破”

-2-

1.持久化(Persistence)
2.哨兵(Sentinel)和复制(Replication)
3.集群(Cluster)
4.Pipeline(管道)
5.redis事务
6.发布与订阅

-3-

1.存储方式:
(1)memecache 把数据全部存在内存之中,断电后会挂掉,数据不能超过内存大小
(2)redis有部份存在硬盘上,这样能保证数据的持久性,支持数据的持久化
(注:有快照和AOF日志两种持久化方式,在实际应用的时候,要特别注意配置文件快照参数,要不就很有可能服务器频繁满载做dump)。
2.数据支持类型:
redis在数据支持上要比memecache多的多,除了String,同时还提供list,set,hash等数据结构的存储。
3.使用底层模型不同:
新版本的redis直接自己构建了VM 机制 ,因为一般的系统调用系统函数的话,会浪费一定的时间去移动和请求。
关注点–
1.Memcached单个key-value大小有限,一个value最大只支持1MB,而Redis最大支持512MB
2.Memcached只是个内存缓存,对可靠性无要求;而Redis更倾向于内存数据库,因此对对可靠性方面要求比较高
3.从本质上讲,Memcached只是一个单一key-value内存Cache;而Redis则是一个数据结构内存数据库,支持五种数据类型,因此Redis除单纯缓存作用外,还可以处理一些简单的逻辑运算,Redis不仅可以缓存,而且还可以作为数据库用
4.新版本(3.0)的Redis是指集群分布式,也就是说集群本身均衡客户端请求,各个节点可以交流,可拓展行、可维护性更强大。

-4-

1.Redis是基于内存的操作,CPU不是Redis的瓶颈,Redis的瓶颈最有可能是机器内存的大小或者网络带宽。
既然单线程容易实现,而且

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值