redis

一、什么是Redis

Redis是一种基于内存的高性能Key-Value数据库
Redis支持string、list、set、zset、hash类型数据,都支持push/pop、add/remove及交集、并集、差集等操作。为保证效率,数据缓存在内存中。
Redis会周期性的把更新的数据写入磁盘或者把修改追加到文件,在此基础实现Master-Slave(主从)同步。
数据可以从主服务器向任意数量的从服务器同步
Redis使用两种文件格式:全量数据RDB和增量请求AOF;全量数据格式把内存中的数据写入磁盘,便于下次读取文件时进行加载;
    增量请求则是把内存中的数据序列化转为操作请求,用于读取文件进行replay得到数据,类似mysql的binlog。
Redis的存储分为内存存储、磁盘存储、log文件三部分。

二、Redis持久化

Redist提供两种持久化的方式:
RDB(Redis DataBase):在规定的时间点,将redis存储的数据生成快照并存储到磁盘等介质上。
AOF(Append Only File):将redis执行过的所有写指令记录下来,在下次redis重新启动时,把指令从前到后再执行一遍,就实现了数据恢复。
两种方式也可以同时使用,如果redis重启,优先采取AOF方式来进行数据恢复,因为AOF方式的数据恢复完整度更高。也可以完全关闭这两种。

cat /etc/redis.conf 
save 900 1			#表示900s内发生了1次更改
save 300 10			#表示300s内发生了10次更改
save 60 10000			#表示60s内发生了10000次更改
#以上三个参数,决定RDB写入磁盘时间,保持默认即可,注释即关闭

cat /etc/redis.conf
# appendfsync always				#一直记录,每次有变更就记录
appendfsync everysec				#每秒记录一次
# appendfsync no				#每隔一段时间记录一次,根据系统里面算法决定,不安全
#以上三个参数,决定AOF写入时间,保持默认即可,注释即关闭

三、Redis数据类型

Redis的数据类型有五种:string、list、set、zset、hash
string是最简单的类型,一个key对应一个value。

127.0.0.1:6379> set mykey "123456"
OK
127.0.0.1:6379> get mykey
"123456"
127.0.0.1:6379> mset k1 1 k2 2 k3 3 k4 4 k5 5   #支持tab命令补全
OK
127.0.0.1:6379> mget k1 k2 k3 k4 k5 mykey
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
6) "123456"

list是一个链表结构,主要功能是push、pop、获取一个范围的所有值等,操作中key可理解为链表的名字。
    可以轻松实现最新消息排行,消息队列,可以利用list的push操作将任务存在list中,然后工作线程再用pop操作取出执行。

127.0.0.1:6379> lpush list1 "abc"	#lpush表示推进去
(integer) 1
127.0.0.1:6379> lpush list1 "123"
(integer) 2
127.0.0.1:6379> lpush list1 "1q2w3e"
(integer) 3
127.0.0.1:6379> lrange list1 0 -1	#0表示第一位, -1表示最后一位
1) "1q2w3e"
2) "123"
3) "abc"				#最先推进去的排在后面
127.0.0.1:6379> lpop list1		#lpop表示取出来,默认取出最前面的
"1q2w3e"
127.0.0.1:6379> lrange list1 0 -1	#取出来的数据就补在list中了
1) "123"
2) "abc"

set是集合,对集合的操作有添加、删除元素,对多个集合求交并差集操作。操作中key可理解为集合的名称
 

。。。未完待续

你可能感兴趣的:(redis,redis)