redis特性

特性

1) 数据类型:Redis可以存set,list,String,hash,sorted set等多种数据类型的数据

2) 排序: SORT key [asc] [alpha] [limit start count]
Lpush key1 12
Lpush key1 14
Sort key1
3) 计数: 有了原子递增,你可以放心的加上各种计数,用getset重置,或者是让他们过期
1. INCR user:<id> EXPIRE
2. User:<id> 60
可以计算出最近用户在各邮件停顿不超过60秒的邮件浏览量,当计数达到一个值时可以显示邮件的具体信息从而可以分析他想要找哪方面的信息。
实时分析正在发生的情况
统计在某段特定时间里有多少特定用户访问了某个特定资源,比如我想要知道某些特征用户或IP地址,他们有多少访问了某个邮件及访问的时间长度。 比如线次我获得一次新邮件浏览时可以使用此命令:
SADD email:day1:<email_id><user_id> day1也可用time()-(time()600*24) 替代
特定用户的数量: SCARD email:day1:<email_id>
测试某个特定用户是否访问了这个邮件: SISMEMBER email:day1:<email_id>

4) 事务:
Redis只能保证一个client 发起的事务中的命令可以连续的执行,中间不会插入其他client的命令,因为redis是单线程来处理所有client的请求所以很容易做到这一点。 一般是发来一个命令后立即处理并返回结果,但如果client发出multi命令后此连接会进入一个事务上下文,该连接后续命令会放到一个队列中,当发出 exec命令后再顺序执行命令。
Ex: multi (OK) incr a (QUEUED) incr b (QUEUED) exec (1.(integer) 1 2.(integer) 2)

乐观锁:Watch 命令会监视给定的key,当exec 时候如果监视的key从调用watch后发生过变化,则整个事务会失败
Watch a (OK) incr a (QUEUED) incr b (QUEUED) exec (nil)

5) 支持发布订阅: 订阅者可以通过subscribe和psubscribe命令向redis订阅自己感兴趣的消息类型
持久化 (Snapshotting & Append-only file aof)
主从复制: 多个slave连到master, slave互连.
1) 主从复制不会阻塞master
2) 提高系统伸缩性,slave分别负责读请求,排序,数据冗余
3) 禁掉master上的数据持久化(save配置信息),转到某个slave来进行。
过程: 
1) master启动一个后台进程,将数据库快照保存到文件中,收集新的写命令并缓存,批量发送给slave
2) slave将文件保存到磁盘上然后加载到内存恢复快照到slave上
3) master把缓存的命令转发给slave. (写一个文件将其发送给所有slave)

6) 虚拟内存:
将不经常访问的数据放到交换分区中

你可能感兴趣的:(redis特性)