Redis教程

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统计。

 

GEO地理位置

 

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

http://www.liuhaihua.cn/redis%E6%95%99%E7%A8%8B

相关文章
相关标签/搜索