1.redis是一种高级的key-value存储系统,value五种数据类型(1,字符串strings;2.字符串列表lists;3.字符串集合sets;4.有序字符串集合sorted sets;5、哈希hashes)
2.redis持久化的两种方式:RDB(Redis DataBase)和AOF(Append Only File只允许追加不允许改写的文件);
RDB:在不同的时间点,将redis存储的数据生成快照并存储到磁盘等介质上;对于RDB方式,redis会单独创建(fork)一个子进程来进行持久化,而主进程是不会进行任何IO操作的,这样就确保了redis极高的性能
AOF:将redis执行过的所有写指令记录下来,在下次启动redis时候,只要把这些指令重新执行一遍,就可以实现数据恢复;配置redis.conf中的appendonly yes就可以打开AOF功能。如果有写操作(如SET等),redis就会被追加到AOF文件的末尾。
二者可同时使用
3.redis.conf:daemonize no (改为yes,默认以后台程序方式运行等价于./redis-server &)
timeout(redis-client一直没有请求发现server端,server就会主动关闭这个连接)空闲超时时间,0表示永不关闭
当从redis失去了与主redis的连接,或者主从同步正在进行中时,redis该如何处理外部发来的访问请求呢?这里,从redis可以有两种选择:第一种选择:如果slave-serve-stale-data设置为yes(默认),则从redis仍会继续响应客户端的读写请求。
第二种选择:如果slave-serve-stale-data设置为no,则从redis会对客户端的请求返回“SYNC with master in progress”,当然也有例外,当客户端发来INFO请求和SLAVEOF请求,从redis还是会进行处理
4.二者的选择:
RDB与AOF的选择:
做备份:当数据量大,且对恢复速度有要求,并且数据的一致性要求不高的话,可以只使用RDB
只做缓存:不用开启任何的持久化方式
两者都开启的建议:RDB数据不实时,同时使用两者时服务器只会找AOF文件,可不可以只使用AOF?作者建议不要,因为RDB更适合备份数据库(AOF在不断变化,不好备份)