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事务