keys
redis是key-value数据库,在redis中,key是二进制数,因此字符串和图片都可以作为key,通过keys查询redis中所有的key:
key后面可以用“*”或者“?”:
platform:*,匹配“platform”开头的key;
pl?tform,匹配platform或者pletform
*,查询所有keys。
通过exists判断key是否存在,返回1表示存在,返回0表示不存在。
通过del命令删除Key-Value,
通过expire制定多少秒后key-value自动删除,ttl查看key的存活时间:
Redis 数据类型
Redis支持五种数据类型:String(字符串),hash(哈希),list(列表),set(集合)及zset(有序集合)。
String(字符串)
stirng是redis最基本的类型,一个key对应一个value。
string类型是二进制安全的。string中可以包含任何数据。
string类型是redis最基本的数据类型,一个键最大能存储512MB.
示例:
set命令可以添加/覆盖一个字符串或者数字类型,get命令获取值,也可通过mget来获取多个key的值。:
对于数字类型的字符串,可通过以下命令对其进行算数运算操作:
DECR/INCR,数字类型的数据自增减和自增
DECRBY/INCRBY,数字类型数据减去某个指定的整数和增加某个指定的整数。
INCRBYFLOAT,数值类型增加一个浮点数,负数表示减去。
list(列表)
redis list类型类似java的LinkedList,通过链表来完成,像其添加元素速度非常快,但按照索引方式获取元素比较慢。因此list结构适合大数据量要求插入速度极快的场景。
rpush 将多个值放入list尾部(右边),lpush 将多个值放入list头部(左边),使用lrange能从左到右实现指定范围的列表:
rpop从list尾部抽取出一个元素,lpop从list头部抽取一个元素。llen获取list长度:
对于消息服务要求,可使用lpop或者rpop,如果列表为空,会返回一个nil,导致消息订阅者不断尝试调用pop命令。另一种方式是redis提供了带阻塞的(block)的pop命令,blpop或者brpop。这两个命令在list为空时处于等待状态,直到列表有元素,或者指定时间到期为止。
blop参数可接受同时获取多个列表,因此返回的是一个两个元素的列表,第一个元素是key值,第二个获取的是元素值。
blpop总是先返回有元素的列表,参数为0表示永远等待。
Hash(哈希)
Redis hash是一个键值(key>=value)对集合。
hash是一个string类型的field和value的映射表,hash特别适合存储对象。每个hash可存储2^32-1键值对(40多亿)。
hash有以下指令:
hset key filed value,给指定的key设置一个字段值,如果值已经存在,则覆盖。返回0表示失败,返回1表示成功。
hget key filed,获取指定key的filed字段的值,如果不存在,返回nil。
hexists key filed,判断制定的key的field字段是否存在,不存在返回0,存在返回1。
hkeys key,返回key所指定的hash所有的字段名。
hgetall key,返回所有的字段名和字段值。
hdel key field[field],删除多个字段值。
假如系统的用户session会话保存到Redis中,key值得格式是session:{sessionId},以下的sessionId假设为“1xac”:
Hash的字段支持递增计算,也是具有原子性。
hincby key field value,对key指定的hash数据中的field的值进行计算,增加整型value。
hincbyfloat key field value,对key指定的hash数据中的field的值进行计算,增加浮点数value.
set(集合)
set与java中的java.util.Set类似,代表了元素不重复的集合,redis的Set除了元素的添加删除操作外,还包含了集合的并集、交集等功能,可以用于统计访问网站的所有IP,或者统计网站作者的所有共同粉丝等应用,常用的命令如下:
sadd key member[member..],添加元素。
srem key member[member..],删除元素。
smembers key,返回一个集合中的所有元素。
sinter key1 key2,返回两个集合的共同元素。
sinterstore key1 key2 key3,取key2和key3两个集合的共同元素,并且存放到key1集合。
sunion key1 key2,返回一个合并后的集合。
sunionstore key1 key2 key3,取两个集合的合并,并且存放到key1集合。
当set用于统计网站访问的IP时,实例如下:
set用于查看两人共同好友,示例如下: