http://www.runoob.com/redis/redis-tutorial.html

Redis:高性能键值对数据库,支持的键值数据类型:

  • 字符串类型
  • 列表类型
  • 有序集合类型
  • 散列类型
  • 集合类型

Redis的应用场景:

  • 缓存
  • 任务列表
  • 应用排行榜
  • 网站访问统计
  • 数据过期处理
  • 分布式集群架构中的session分离

Redis的数据结构:

  • 字符串(String)
  • 字符串列表(list)
  • 有序字符串集合(sorted set)
  • 哈希(hash)
  • 字符串集合(set)

Key定义的注意点:

  • 不要过长
  • 不要过短
  • 统一的命名规范

存储String:

  • 二进制安全的,存入和获取的数据相同
  • Value最多可以容纳的数据长度是512M
  • 常用命令:赋值(set、getset(先取值后赋值))、删除(del)、扩展命令、取值(get)、数据增减(incr(整形数据+1)、incrby [key] num(数据+num)、decr(数据-1)、decrby [key] num(数据-num)、append [key] num(在value后面加num))

存储Hash:(用户名、密码)(hash 是一个string类型的field和value的映射表,hash特别适合用于存储对象。)

  • String Key和String Value的map容器
  • 每一个Hash可以存储4294967295个键值对
  • 常用命令:赋值(hset、hmset)、删除(hdel)、自学命令(hexists(属性是否存在,存在返回1,不存在返回0)、hlen(存在多少个属性)、hkeys(取得所有属性)、hvals(取得所有值))、取值(hget、hgetall)、增加数字(hincrby)

存储list:(列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素导列表的头部(左边)或者尾部(右边))

  • ArrayList使用数组方式
  • LinkedList使用双向链接方式
  • 双向链表中增加数据
  • 双向链表中删除数据
    • 常用命令:两端添加(lpush从左侧添加、rpush从右侧添加)、查看列表(lrange [name] start end)、两端弹出(lpop(头部弹出)、rpop(尾部弹出))、获取列表元素个数(llen)、扩展命令(lpushx (将一个值插入到已存在的列表头部)、rpushx(将一个值插入到已存在的列表尾部)、lrem KEY_NAME COUNT VALUE (根据参数 COUNT 的值,移除列表中与参数 VALUE 相等的元素)、lset(通过索引设置列表元素的值)、linsert key BEFORE|AFTER pivot value(在列表的元素前或者后插入元素)、rpoplpush source destination (移除列表的最后一个元素,并将该元素添加到另一个列表并返回))

       

存储Set:(Set是string类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。

Redis 中 集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。)

  • 和List类型不同的是,Set集合中不允许出现重复的元素
  • Set可包含的最大元素数量是4294967295
  • 常用命令:添加/删除元素(sadd、srem)、获得集合中的元素(smembers、sismember(判断 member 元素是否是集合 key 的成员)、scard(获取集合的成员数)、srandmember(返回集合中一个或多个随机数))、集合中的差集运算(sdiff、sdiffstore(返回给定所有集合的差集并存储在一个set 中))、集合中的交集运算(sinter、sinterstore(返回给定所有集合的交集并存储在 set 中))、集合中的并集运算(sunion、sunionstore(所有给定集合的并集存储在 set 集合中))、扩展命令

存储Sorted-Set:((微博热点排名、游戏排名)

 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。

不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。

有序集合的成员是唯一的,但分数(score)却可以重复。

集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。 

  • Sorted-Set和Set的区别
  • Sorted-Set中的成员在集合中的位置是有序的
  • 常用命令:添加元素(zadd)、获得元素(zscore、zcard)、删除元素(zrem、zremrangebyrank(移除有序集合中给定的排名区间的所有成员)、zremrangebyscorre(移除有序集合中给定的分数区间的所有成员))、范围查询(zrange(从小到大)、zrevrange(从大到小))、扩展命令(zrangebyscore、zincrby、zscore、zcount)

 Redis相关特性:

  • 多数据库
  • Redis事务