赞
踩
1.性能极高,速度快,因为它可以在内存中运行,读的速度是110000次/s,写的速度是81000次/s。
2.支持丰富的数据类型。 常用的5种数据类型为:String,list,set,hash及 zset(有序集合)等。
3.原子性。单个Redis的操作要么全部成功,要么全部失败。多个操作是支持事务的,需要通过MULTI和EXEC指令包起来。
4. 丰富的特性。Redis还支持消息的发布订阅,通知、key失效等特性。
5. 数据的持久性,在宕机时,可以自动将内存中的数据持久化到硬盘中。
布隆过滤器。通过bloomFilter过滤掉有很大可能不在数据库中的数据,减小Redis以及数据库的压力。
比如,先把所有用户的id存放到一个bloomFilter里,然后在访问时根据id来判断是否在过滤器里,如果存在那么放行,如果不存在那么就直接return。布隆过滤器默认的误判概率为3%,一般在应用启动的时候加载,使用@PostConstruct注解即可在应用启动时加载布隆过滤器。
1. 存储方式。 Memcache会把数据库存到内存中,断电后会挂掉,数据不能超过内存的大小,而Redis有部分存在硬盘中,这样能保证数据的持久性。
2. Memcache支持的数据类型相对比较简单。Redis有复杂的数据类型。
3.使用底层模型不同 它们之间底层实现方式 以及与客户端之间通信的应用协议 不一样。 Redis 直接自己构建了 VM 机制(冷热数据分离,热数据保存到内存中,冷数据保存在磁盘里) ,因为一般的系统调用系统函数的话, 会浪费一定的时间去移动和请求。
1. Redis是单进程单线程的。redis利用队列技术将并发访问由并行变为串行。消除了传统数据库串行控制的开销。
512M。
主要有2种方式,为RDB和AOF。
RDB
RDB(Redis Data Base)方式 ,使用快照的方式来备份数据,记录在某个时间点内,将数据写入到一个临时文件,持久化结束后,用这个临时文件替换上次的持久化文件,达到数据恢复。
在config文件中的自带的配置文件redis.windows.conf可以看到 save 900 1 ,它表示在900s内有一个键发生改变时,需要执行快照备份,即将key进行备份。
我们可以在服务端的命令行来查看,redis-server会自动的300s内有10个key变化就备份key,900s内有一个key变化来开启一个线程来备份key。
此方式的优点为:
1.只有一个dump.db文件,方便持久化。
2. 容灾性好,一个文件可以保存到安全的磁盘中。
3.性能最大化,采用fork子线程来完成写操作,让主线程继续执行命令,所以是IO最大化。使用单独的子线程来保证redis的高性能,因为主线程不会进行任何的IO操作。
4. 相对于数据集大时,比AOF的启动效率更高。
缺点:
1.数据安全性低。RDB是间隔的时间来执行快照,如果持久化之间redis发生故障,那么会导致数据丢失,这种方式对于数据要求很严谨的时候不适合采用。
AOF方式
是指所有的命令行记录以redis命令请求协议的格式完全持久化存储,保存为AOF文件。
优点:
1.数据安全。通过配置apendfsync属性,有always,每进行一次命令操作记录到aof文件中一次。
2. 通过append模式来写文件,即使中途服务器宕机,也可以通过redis-check-aof工具来解决数据一致性的问题。
缺点:
1. AOF保存下来的数据文件比RDB要大,恢复速度要比RDB方式慢。
2. 数据集大的时候比RDB启动效率要低。
1) 可以,一般使用list结构来作为队列。rpush生产消息,lpop消费消息。当lpop没有消息的时候,需要适当的sleep一下, redis 5.0 版本有自带消息队列,但是性能较差。
2)如果不sleep可以实现消息队列嘛? 可以list还有一个指令叫 blpop,在没有消息的时候,会阻塞直到消息到来。
3) 可以实现一对多的消费模式嘛? 可以。 使用pub/sub主题订阅模式,可以实现1:N的消息队列。但是pub/sub模式的缺点为: 在消费者下线的情况下,生产者的消息会丢失。 这个时候就要使用专业的消息队列如RabbitMQ, 其中吞吐量 kafka> rocketmq>rabbitmq。
答: 1) LRU, 最近最少使用的key进行淘汰。
2) 随机淘汰策略,随机选择一个key进行淘汰。
3) key 剩余时间最短的淘汰。
答: 通过使用lua脚本,将多个操作写到一个lua脚本里,redis会把lua脚本作为一个整体来执行,要么执行成功,要么执行失败,从而保证了原子性。
redis 事务的单个命令是原子性的,但是redis执行事务的过程不是原子性的。
命令 | 含义 |
MUTI | 开启一个redis事务 |
EXEC | 结合MUTI命令,触发事务 |
DISCARD | 取消事务,同时事务块内所有命令会取消执行 |
WATCH [KEY...] | 监控Key,如果被监控的key被修改了,那么事务会被打断 |
UNWATCH | 取消监控所有的key |
答: 通过重写AOF文件操作,相当于整理AOF文件里的内容,将AOF文件体积压缩, 通过命令 bgrewriteaof执行。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。