Redis是线程安全的么?
Redis是单进程单线程的,所以是线程安全的。Redis是利用队列技术将并发访问变为串行访问
为什么使用Redis,它有什么好处?
- 速度快,因为数据存放在内存中;
- 支持多种数据类型,支持String,List,Set,Sorted set,Hash(底层相当于一个Map结构);
- 提供了RDB和AOF两种持久化方式;
- 丰富的特性:可用作缓存,消息,可以按key设置过期时间,过期后将会自动删除;
- 支持事务,操作都是原子性。
RDB和AOF的区别
RDB 持久化:是将在指定的时间间隔内生成的数据集备份到磁盘中。(可能丢失一段时间的数据)
AOF 持久化:记录的是服务器执行的所有写操作命令,并在服务器启动时,通过重新执行这些命令来还原数据集。 AOF可以每秒同步一次(默认方式),也可以每次执行写入命令时同步一次。
详解请看:redis持久化RDB和AOF
mySQL里有2000w数据,redis中只存20w的数据,如何保证redis中的数据都是热点数据
相关知识:redis 内存数据集大小上升到一定大小的时候,就会施行数据淘汰策略。redis 提供 6种数据淘汰策略:
1. volatile-lru:从已设置过期时间的数据集(server.db[i].expires)中挑选最近最少使用的数据淘汰
2. volatile-ttl:从已设置过期时间的数据集(server.db[i].expires)中挑选将要过期的数据淘汰
3. volatile-random:从已设置过期时间的数据集(server.db[i].expires)中任意选择数据淘汰
4. allkeys-lru:从数据集(server.db[i].dict)中挑选最近最少使用的数据淘汰
5. allkeys-random:从数据集(server.db[i].dict)中任意选择数据淘汰
6. no-enviction(驱逐):禁止驱逐数据
redis相比memcached有哪些优势
- memcached的value为String数据类型,Redis的value支持更多的数据类型(String,List,Set,Sorted set,Hash);
- Redis的速度比memcached快很多;
- Redis支持持久化方式。
Memcache与Redis的区别有哪些?
存储方式
Memecache把数据全部存在内存之中,断电后会丢失,数据不能超过内存大小。
Redis可以将部分数据存放在硬盘上,这样能保证数据的持久性。数据支持类型
Memcache支持字符串数据类型。
Redis支持String,List,Set,Sorted set,Hash数据类型。使用底层模型不同
它们之间底层实现方式以及与客户端之间通信的应用协议不一样。
Redis直接自己构建了VM机制,因为一般的系统调用系统函数的话,会浪费一定的时间去移动和请求。value大小
Redis的value最大可以达到1GB,而Memcache只有1MB。
参考: redis详解(三)– 面试题