Redis是一个开源的key-value存储系统,拥有丰富的数据结构。它属于NoSQL(Not Only SQL)数据库中的键值(Key-Value)存储数据库,它与memcached类似,但是在某些方面优于memcached。
它支持丰富的数据类型,如:string、list、set、zset(sorted set)、hash。
redis中所有的数据都是字符串.
1.字符串类型(String)
2.散列类型(Hash)
3.列表类型(List)
4.集合类型(Set)
5.有序集合类型(SortedSet)redis是单线程的,不适合存储比较大的数据.
常见的命令操作
设置值
set key value
获取值
get key
删除key
del key
检查key是否存在
EXISTS key
查询所有符合指定模式的key
KEYS pattern
加一
inc key
减一
相当于Java中的Map
设置值
hset key field value
获取值
hget key field
加num
hincrby key field num
操作其实是往String类型的前面加了一个h。
set变成hset
List是有顺序可重复的,数据结构为双链表队列,可以从左右两个方向添加元素.
从左添加元素
lpush list a b c d
从右向左
rpush list a b c d
获取列表长度
LLEN key
Set无序,不能重复.
添加元素
sadd set a b c d d
查询元素
smembers set
删除元素
SPOP key
zset有顺序,不能重复
适合做排行榜,排序需要一个分数属性
1、速度快(原因:I、Redis以内存作为数据存储介质,所以读写效率特别高。II、单线程操作,避免频繁上下文切换。III、采用了epoll机制。)
2、支持多种数据类型。支持string,list,set,hash,sorted set。
3、支持事务。所有的操作都是原子性的。要么全部做,要么全部都不做。
4、丰富的特性。可用与缓存,消息,按key设置过期时间。过期后自动删除。
1、存储方式:Redis支持数据持久化,运行的时候会备份在磁盘,断电或者重启后缓存数据还可以重新加入内存种
2、Memcached所有的值都是使用简单字符串存储。Redis的多种数据类型更加丰富。
3、Redis速度比Memcache快
1.缓存
2.分布式集群架构中的session分离
3.任务队列(秒杀、抢购、12306等等)
4.应用排行榜(SortedSet)
5.网站访问统计
6.数据过期处理(expire)
Redis强劲的性能很大程度上是由于其将所有数据都存储在了内存,然而当Redis重启之后,所有存储在内存中的数据就会丢失。例如:
我们希望Redis能将数据从内存中以某种形式同步到硬盘中, 使得重启之后可以根据硬盘中的记录恢复数据。这一过程就是持久化。
Redis 支持两种方式的持久化, 一种是RDB方式, 另一种是AOF方式。
RDB持久化是通过快照完成的。当满足一定条件redis会自动将内存的数据做快照并且存到硬盘里。
在redis.conf定义。(Yum默认安装的是在/etc/redis.conf)
由时间窗口以及改动的键个数组成
默认安装之后有三个条件。
save 900 1 #900秒内有至少1个键被更改则进行快照
save 300 10 # 300秒内有至少10个键被更改则进行快照
save 60 10000 # 60秒内有至少10000个键被更改则进行快照
他们之间的条件是或,只要满足一条就会执行。
237行是文件名,247行是所在目录的名字,可以修改。
开启AOF持久化后每执行一条会更改Redis中的数据的命令,Redis就会将该命令写入硬盘中的AOF文件。
AOF是默认不开启的。
593 appendonly no
594
595 # The name of the append only file (default: "appendonly.aof")
596
597 appendfilename "appendonly.aof"
把appendonly改成yes,就ok。
AOF文件保存的位置和RDB文件的位置是一致的。
然后appendfilename "appendonly.aof"是默认的文件名。
如果需要恢复数据,只需将备份文件 (dump.rdb) 移动到 redis 安装目录并启动服务即可。
Redis允许同时开启AOF和RDB,既保证了数据安全又使得进行备份等操作十分容易。此时重新启动Redis后Redis会使用AOF文件来恢复数据,因为AOF方式的持久化可能丢失的数据更少