Redis
本周我们来对redis做一些探讨。之前大家应该经常听说NoSQL这个词,所谓NoSQL字面意思就是没有SQL,也就是说我们之前所接触的数据库大都是关系数据库(如mysql,SQL Server等),对数据库的操作经常是通过SQL语句。但在NoSQL里面,我们对数据库的操作将没有任何SQL语句。怎么样是不是很神奇??好吧其实很简单。下面为大家一一讲解。
Redis是一种内存数据库,也就是说它是一种内存操作,传统的数据库数据是放在硬盘,相比Redis速度肯定是跟不上的。
Redis是一种K/V 数据库,支持多种数据结构,之所以说不用SQL语句,因为我们可以直接通过这些数据结构来存取数据。
D:\redis>redis-cli.exe -h 127.0.0.1 -p 6379
127.0.0.1:6379> set name liwei
OK
(0.90s)
127.0.0.1:6379> get liwei
"hello world"
127.0.0.1:6379> get name
"liwei"
127.0.0.1:6379>
就像上面一样,直接用get方法就可以访问,其支持HashMap,List等多种数据结构,比原先SQL更加方便。
Redis的持久化
前面我们讲到了Redis是纯内存操作,那么我们存取数据也是内存里存取,这里的问题就是如果这次服务器关了,那数据是不是就丢了呢,其实并不会,Redis本身也是有持久化操作的,并切数据是存放在其dump.rdb文件里的,在redis的配置文件中可以看到不同的持久化配置
save 900 1
save 300 10
save 60 10000
上面的意思是一种为900s内超过1个key存入就写入一次,一种为300s内超过10个key存入就写入一次,第三种是10000内超过60个就写入一次。大家可以根据自己的需要自己配置,配置的原则是在数据安全和程序运行效率之间选一个最合适的。
Redis与SQL
Redis也有不足的地方,最大的弊端就是占内存,在服务器启动的时候Redis会将数据从持久化文件中加载到内存中,现在大多电脑内存还是较小的,如果是海量数据我们是无法在redis中操作的,Redis中的数据一旦超过了与分配的内存,接下来的写入就失效了。所以我们要在SQL和redis中灵活切换,将SQL中常访问的小部分数据放在redis中,让redis充当cache一样的角色,这样SQL与NoSQL结合才能让项目更完美。