为什么使用Redis?
项目中使用Redis,主要考虑性能和并发两个方面。在大并发的情况下,所有的请求直接访问数据库,数据库会出现连接异常。这个时候,就需要使用Redis做一个缓冲操作,让请求先访问到Redis,而不是直接访问数据库。不过,Redis也有慢查询操作。根据交互效果的不同,响应时间没有固定标准。在理想状态下,我们的页面跳转需要在瞬间解决,对于页内操作则需要在刹那间解决。
Redis的数据类型有哪些?
数据类型:
1)String:一般做一些复杂的计数功能的缓存;
2)Hash:存储二维数据或对象;
3)List:可实现队列,栈及有序的数据存储;
4)Set:常用于黑名单,微信抽奖等功能,应用场景多变;
5)SortedSet:做排行榜应用,取TOPN操作;延时任务;做范围查找。
Redis持久化机制是什么?
Redis是一个支持持久化的内存数据库,通过持久化机制把内存中的数据同步到硬盘文件来保证数据持久化。当Redis重启后通过把硬盘文件重新加载到内存,就能达到恢复数据的目的。
实现:单独创建fork()一个子进程,将当前父进程的数据库数据复制到子进程的内存中,然后由子进程写入到临时文件中,持久化的过程结束了,再用这个临时文件替换上次的快照文件,然后子进程退出,内存释放。
RDB是Redis默认的持久化方式。按照一定的时间周期策略把内存的数据以快照的形式保存到硬盘的二进制文件。即Snapshot快照存储,对应产生的数据文件为dump.rdb,通过配置文件中的save参数来定义快照的周期。( 快照可以是其所表示的数据的一个副本,也可以是数据的一个复制品。)
AOF:Redis会将每一个收到的写命令都通过Write函数追加到文件最后,类似于MySQL的binlog。当Redis重启是会通过重新执行文件中保存的写命令来在内存中重建整个数据库的内容。
当两种方式同时开启时,数据恢复Redis会优先选择AOF恢复。
单线程的Redis为什么这么快?
1)纯内存操作
2)单线程操作,避免了频繁的上下文切换
3)采用了非阻塞I/O多路复用机制
Memcache与Redis的区别都有哪些?
1)存储方式 Memecache把数据全部存在内存之中,断电后会挂掉,数据不能超过内存大小。Redis有部份存在硬盘上,redis可以持久化其数据。
2)数据支持类型 memcached所有的值均是简单的字符串,redis作为其替代者,支持更为丰富的数据类型 ,提供list,set,zset,hash等数据结构的存储。
3)使用底层模型不同 它们之间底层实现方式 以及与客户端之间通信的应用协议不一样。Redis直接自己构建了VM机制 ,因为一般的系统调用系统函数的话,会浪费一定的时间去移动和请求。
4)value 值大小不同:Redis 最大可以达到1gb;memcache只有1mb。
5)redis的速度比memcached快很多
6)Redis支持数据的备份,即master-slave模式的数据备份。
如果你想学习Java编程开发,又没有什么编程基础,可以通过专业的方式学习Java编程,专业的学习能帮助零基础的人快速入门Java。