keys


     redis是key-value数据库,在redis中,key是二进制数,因此字符串和图片都可以作为key,通过keys查询redis中所有的key:




java redis判断key是否存在 redis如何判断key是否存在_redis




    key后面可以用“*”或者“?”:


    platform:*,匹配“platform”开头的key;

    pl?tform,匹配platform或者pletform

    *,查询所有keys。

    通过exists判断key是否存在,返回1表示存在,返回0表示不存在。

    

java redis判断key是否存在 redis如何判断key是否存在_字段_02

通过del命令删除Key-Value,

java redis判断key是否存在 redis如何判断key是否存在_字符串_03

通过expire制定多少秒后key-value自动删除,ttl查看key的存活时间:

 

java redis判断key是否存在 redis如何判断key是否存在_字段_04



Redis 数据类型

    Redis支持五种数据类型:String(字符串),hash(哈希),list(列表),set(集合)及zset(有序集合)。

String(字符串)

    stirng是redis最基本的类型,一个key对应一个value。

    string类型是二进制安全的。string中可以包含任何数据。

    string类型是redis最基本的数据类型,一个键最大能存储512MB.

    示例:

    set命令可以添加/覆盖一个字符串或者数字类型,get命令获取值,也可通过mget来获取多个key的值。:

java redis判断key是否存在 redis如何判断key是否存在_字段_05

    对于数字类型的字符串,可通过以下命令对其进行算数运算操作:

    DECR/INCR,数字类型的数据自增减和自增

java redis判断key是否存在 redis如何判断key是否存在_java redis判断key是否存在_06

    DECRBY/INCRBY,数字类型数据减去某个指定的整数和增加某个指定的整数。

 

java redis判断key是否存在 redis如何判断key是否存在_java redis判断key是否存在_07

    INCRBYFLOAT,数值类型增加一个浮点数,负数表示减去。

java redis判断key是否存在 redis如何判断key是否存在_redis_08

list(列表)

    redis list类型类似java的LinkedList,通过链表来完成,像其添加元素速度非常快,但按照索引方式获取元素比较慢。因此list结构适合大数据量要求插入速度极快的场景。

    rpush 将多个值放入list尾部(右边),lpush 将多个值放入list头部(左边),使用lrange能从左到右实现指定范围的列表:

java redis判断key是否存在 redis如何判断key是否存在_字段_09

    rpop从list尾部抽取出一个元素,lpop从list头部抽取一个元素。llen获取list长度:

    

java redis判断key是否存在 redis如何判断key是否存在_redis_10

对于消息服务要求,可使用lpop或者rpop,如果列表为空,会返回一个nil,导致消息订阅者不断尝试调用pop命令。另一种方式是redis提供了带阻塞的(block)的pop命令,blpop或者brpop。这两个命令在list为空时处于等待状态,直到列表有元素,或者指定时间到期为止。

java redis判断key是否存在 redis如何判断key是否存在_字段_11

    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”:

java redis判断key是否存在 redis如何判断key是否存在_java redis判断key是否存在_12

    Hash的字段支持递增计算,也是具有原子性。

    hincby key field value,对key指定的hash数据中的field的值进行计算,增加整型value。

    hincbyfloat key field value,对key指定的hash数据中的field的值进行计算,增加浮点数value.

    

java redis判断key是否存在 redis如何判断key是否存在_redis_13

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时,实例如下:

java redis判断key是否存在 redis如何判断key是否存在_redis_14

    set用于查看两人共同好友,示例如下:

    

java redis判断key是否存在 redis如何判断key是否存在_java redis判断key是否存在_15