String操做简单概括:html
1.set get mset mget 设置和获取值,单个与批量。redis
2.incr decr incrby decrby 原子加减操做,带有by的能够指定原子加减的数值。数据结构
3.setnx msetnx 单个和批量的原子设置值操做。并发
4.getset 原子获取设置app
5.strlen append getrange setrange 截取或者设置部分字符串。高并发
6.getbit setbit 二进制偏移量的方式获取和设置值大数据
7.setex 原子设置值而且设置有效时间。lua
上述命令中,若是涉及的的原子操做,一看到原子就能够想到事务的一个特色就是原子性。因此,原子性操做的命令能够用于并发的时候使用。.net
hashes的主要操做基本与map相似,概括记忆为:线程
1. hset hget hdel hgetall 用于操做的设置,获取,删除,获取所有的操做。
2.hexists hlen 判断field是否存在以及获取field的数量。
3.hsetnx不存在的时候才进行设置
4.hincrby 原子加操做
5.hkeys hvalues 获取全部key和全部value
6.hmget hmset 批量获取,设置
hashes适用场景,key-value的存储方式的时候均可以用此种数据结构,也就是基本在你的数据类型中,能够须要用map存储的均可以用这个数据类型存储在redis中。
List的主要操做基本与链表相似,概括记忆为:
lpush rpush lpop rpop:从头部尾部插入数据,弹出数据。
lpushx rpushx 插入数据的时候判断key是否存在,若是不存在就不进行任何操做。
blpop brpop 阻塞的进行弹出操做。
lrange 获取数据
llen 判断数据量
lset lindex linsert ltrim lrm 对于链表的简单操做,设置啊,插入啊,索引啊,删除啊等操做。
rpoplpush brpoplpush 从某list弹出数据而且push到另外的list。b..只是阻塞式的操做。
既然是链表式的存储操做,就必定会具备链表的特性,插入删除较快,索引较慢,因此此数据结构通常用于有序的数据存储,以及能够用于消息队列。
Set的主要操做基本与链表相似,概括记忆为:
1.sadd spop srandmember srem smove 都是set的实际操做命令,好比添加啊,删除弹出,不删除弹出,删除,移动之类的。
2.scard set中的元素个数
3.sdiff sinter sunion 取差集,交集,并集。
4.sdiffstore sinterstore sunionstore 取差,交,并之后放到新的set
set就是一个无序的集合,操做仍是比较方便的。实际应用场景中,好比记录一个链接被用户点击数的时候均可以使用。
SortedSet的主要操做基本与链表相似,概括记忆为:
1.zadd zrem zremrangebyrank zramrangebyscore 有序集合的添加与删除操做,删除分为三种方式,单个和按照区间删除。
2.zcard zcount 集合中的元素数量,以及集合区间内的元素数量。
3.zrange zrevrange zrank zrevrank zrangebyscore zrevrangebyscore 按照区间返回数据,rev为降序的方式返回。
SortedSet就是一个有序的集合,实际应用场景中,若是有分页的操做,或者按照区间统计的时候可使用此数据结构。
Bitmaps,能够计算某数据是否已存在。redis的key和value自己就支持二进制的存储方式,因此bitmaps只是一个独特的扩展。由于是面向字节操做,因此他的最大长度就是512M,最适合设置成2^32个不一样字节。通常的使用场景都是单一的统计,效率较高。好比签到啊,好比点击啊。
HyperLoglog,能够记录一共存在多少不一样数据的总量。
一样是用于计算,HyperLoglog在适用场景方面与Bitmaps方面有什么不一样呢。我我的的理解是,Bitmaps更适合用于验证的大数据,好比签到,
记录某用户是否是当天进行了签到,签到了多少天的时候。也就是说,你不光须要记录数据,还须要对数据进行验证的时候使用Bitmaps。
HyperLoglog则用于只记录的时候,好比访问的uv统计。
redis的持久化方式有两种,分别是:RDB和AOF。
RDB简单的说就是俗称的快照。AOF呢基本就是bin log的模式。
pub/sub 实现中是消息发送者将消息发送给频道,而后订阅的频道的客户收到响应的消息。订阅能够进行精确订阅,也能够经过表达式进行订阅。
注意的是,subscribe的时候线程是会被阻塞的。
使用Lua脚本,经过EVAL 命令调用
http://www.cnblogs.com/ysuzhaixuefei/p/4057458.html
redis+lua解决抢红包高并发的问题 http://blog.csdn.net/hengyunabc/article/details/19433779/
http://www.cnblogs.com/simibaba/category/1021702.html