精华内容
下载资源
问答
  • Redis五种数据类型

    万次阅读 多人点赞 2018-06-07 21:38:32
    乐观锁:心很大,每次去拿数据的时候都不认为别人会修改,在取数据的时候不会加锁,乐观锁可以理解为一检测机制,只是在更新数据的时候会判断一下别人是否已经修改了,如果已经修改了就放弃此次的更新操作,进行重试。...

    强烈推荐一个大神的人工智能的教程:http://www.captainbed.net/zhanghan

    Redis简介

    在没有redis之前,客户端访问后端应用时,当并发大的时候,存储层如mysql是支撑不了的,可能会将存储层mysql压死,存储层一旦宕机,整个应用就完了。为了很高效的加速应用的读写速度,同时也可以降低后端负载在一定程度上可以通过AOF和RDB机制保证在一定的情况下(如缓存层宕机)快速恢复数据为应用提供服务。缓存层可以通过主从复制+哨兵或集群实现高可用。Redis(REmote DIctionary Server)是一个开源的使用ANSI C语言编写的基于内存亦可持久化的日志型,key-value数据库,并提供了多种语言。它通常被称为数据结构服务器,因为值可以是string,hash,list,set,zset. Redis采用了单线程架构和I/O多路复用模型来实现高性能的内存数据库服务,Redis执行命令的速度非常快,官方给出的数字是读写性能可以达到10万/秒,在单线程的架构下为什么能如此快呢?主要有四点原因:①redis的所有数据是存放在内存中的②redis是C语言实现的,C语言实现的程序距离操作系统更近③Redis使用了单线程架构,预防了多线程可能产生的竞争问题,例如,CPU频繁切换,资源竞争等问题。④Redis源代码非常少,可以说是精打细磨的。 ![这里写图片描述](https://img-blog.csdn.net/20180607205750524?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3poMTU3MzI2MjE2Nzk=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)

    基本数据结构

    **1.字符串(String):** 可以是字符串(简单的字符串、复杂的字符串(例如JSON、XML))、数字(整数、浮点数),甚至是二进制(图片、音频、视频),但是值最大不能超过512MB ![这里写图片描述](https://img-blog.csdn.net/20180607202339870?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3poMTU3MzI2MjE2Nzk=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
    • 命令
      添加元素
    //ex:秒级过期时间,nx:键不存在时才能设置成功,xx键存在时才能设置成功
    set key value [ex seconds] [px milliseconds] [nx|xx]
    

    获取值

    get key
    

    批量设置值

    mset key value [key value ...]
    mset a 1 b 2 c 3 d 4
    

    批量获取值

    mget key [key ...]
    mget a b c d
    

    计数

    incr key
    

    追加值

    append key value
    

    字符串长度

    strlen key
    

    设置并返回原值

    getset key value
    

    设置指定位置的字符

    setrange key offeset value
    //例子
     set redis pest
     setrange redis 0 b
     get redis
     结果:"best"
    

    获取部分字符串

    getrange key start end
    
    • 内部编码
      i. int 长整型
      ii. embstr 短字符(<=39字节)
      iii. raw 长字符(>39)
    • 使用场景
      i. 缓存
      这里写图片描述
    //  定义键
    userRedisKey = "user:info:" + id;
    //  从 Redis 获取值
    value = redis.get(userRedisKey);
    if (value != null) {
    //  将值进行反序列化为 UserInfo 并返回结果
    userInfo = deserialize(value);
    return userInfo;
    }
    

    ii. 计数:点赞,视频播放量,每播放一次就+1

    long incrVideoCounter(long id) {
    key = "video:playCount:" + id;
    return redis.incr(key);
    }
    

    iii. 接口防刷:验证码登录,公司一般的验证码等发短信功能都是调用的第三方接口,如果被有心之人利用了,会给公司造成一定的损失,所以简单的解决方法就是限流

    phoneNum = "138xxxxxxxx";
    key = "shortMsg:limit:" + phoneNum;
    // SET key value EX 60 NX
    isExists = redis.set(key,1,"EX 60","NX");
    if(isExists != null || redis.incr(key) <=5){
    //  通过
    }else{
    //  限速
    }
    
    **2.哈希(hash):**哈希类型是指键值本身又是一个键值对结构,value={{field1,value1},...{fieldN,valueN}} ![这里写图片描述](https://img-blog.csdn.net/20180607210008695?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3poMTU3MzI2MjE2Nzk=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
    • 命令
    //设置值
    hset key field value
    
    //获取值
    hget key field
    
    //删除field
    hdel key field [field ...]
    
    //计算field个数
    hlen key
    
    //批量设置或获取field-value
    hmset key field value [field value ...]
    hmget key field [field ...]
    
    //判断field是否存在
    hexists key field
    
    //获取所有field
    hkeys key
    
    //获取所有value
    hvals key
    
    //获取所有的field-value
    hgetall key
    
    //以某种形式自增
    hincrby key field
    hincrbyfloat key field
    
    //计算value的字符串长度
    hstrlen key field
    
    • 内部编码
      i. ziplist:当field个数不超过hash-max-ziplist-entries(默认为512个)时,并且没有大value(64个字节以上算大)
      ii. hashtable:ziplist的两个条件只要有一个不符合就会转换为hashtable
    • 使用场景
      i. 存储用户信息
      § 原生string:直观,占用键多
      § 序列化字符串:序列化后好操作,每次都需要反序列化和序列化所有字段
      § 哈希类型:简单直观,减少内存空间的使用

      **3.列表(list)?*用来存储多个有序的字符串,列表中的每个字符串称为元素(element),一个列表最多可以存储2^32 -1个元素
      这里写图片描述
    • 命令
    //从右边插入元素
    rpush key value [value ...]
    
    //从左边插入元素
    lpush key value [value ...]
    
    //向某个元素前或者后插入元素
    linsert key before|after pivot value
    
    //获取指定范围内的元素列表
    lrange key start end
    
    //获取列表指定索引下标的元素
    lindex key index
    
    //获取列表长度
    llen key
    
    //从列表左侧弹出元素
    lpop key
    
    //从列表右侧弹出
    rpop key
    
    //删除指定元素,count>0从左到右,count<0从右到左,count=0,删除所有
    lrem key count value
    
    //按照索引范围修剪列表
    ltrim key start end
    
    //修改指定索引下标的元素:
    lset key index newValue
    
    //阻塞式弹出
    //列表为空,则按照设置的timeout值进行阻塞
    //列表不为空,则会立即返回
    blpop key [key ...] timeout
    brpop key [key ...] timeout
    
    • 内部编码
      i. ziplist(压缩列表):当列表的元素个数小于list-max-ziplist-entries配置
      (默认512个),同时列表中每个元素的值都小于list-max-ziplist-value配置时
      (默认64字节),Redis会选用ziplist来作为列表的内部实现来减少内存的使
      用。
      ii. linkedlist(链表):当列表类型无法满足ziplist的条件时,Redis会使用
      linkedlist作为列表的内部实现。
    • 使用场景
      i. 消息队列:Redis的lpush+brpop命令组合即可实现阻塞队列

      **4.集合(set)?*用来保存多个的字符串元素,但和列表类型不一样的是,集合中不允许有重复元素,并且集合中的元素是无序的,不能通过索引下标获取元素。
      这里写图片描述
    • 命令
      添加元素
    sadd key element ...
    sadd myset a b c
    

    删除元素

    srem key element [element ...]
    //返回成功删除元素个数
    srem myset a b
    

    计算元素个数

    scard key
    

    判断元素是否在集合中

    sismember key element
    

    随机从集合返回指定个数元素

    srandmember key [count]
    

    从集合随机弹出元素

    spop key
    

    获取所有元素

    smembers key
    

    多个集合求交集

    sinter key [key ...]
    

    多个集合求并集

    suinon key [key ...]
    

    求多个集合的差集

    sdiff key [key ...]
    

    将交集、并集、差集的结果保存

    sinterstore destination key [key ...]
    suionstore destination key [key ...]
    sdiffstore destination key [key ...]
    
    • 内部编码
      i. intset(整数集合):当集合中的元素都是整数且元素个数小于set-max-
      intset-entries配置(默认512个)时,Redis会选用intset来作为集合的内部实
      现,从而减少内存的使用。
      ii. hashtable(哈希表):当集合类型无法满足intset的条件时,Redis会使
      用hashtable作为集合的内部实现。
    • 使用场景
      i. 给用户添加标签
    sadd user:1:tags tag1 tag2 tag5
    

    ii.抽奖
    生成随机数,集合不能存放相同的元素,因此随机pop出一个元素,可以作为中奖的号码
    iii. 社交需求:可以给用户推荐有相同兴趣的人,用于交友。

    **5.有序集合(zset)?*不能有重复的元素,而且还可以排序,它和列表使用索引下标作为排序依据不同的是,它给每个元素设置一个分数(score)作为排序的依据
    这里写图片描述

    • 命令
      添加成员
    zadd key score member
    zadd user:ranking 251 tom
    

    计算成员个数

    zcard key
    zcard user:ranking
    

    计算某个成员的分数,如果成员不存在,则返回nil

    zscore key member
    zscore user:ranking tom
    

    计算成员的排名,zrank是分数从低到高,zrevrank从高到低

    zrank key member
    zrevrank key member
    

    删除成员

    zrem key member
    //将成员mike从有序集合user:ranking中删除
    zrem user:ranking mike
    

    增加成员的分数

    zincrby key increment member
    //给tom增加了9分,分数变为了260分
    zincrby user:ranking 9 tom
    

    返回指定排名范围的成员

    //从低到高返回
    zrange key start end [withscores]
    //从高到低返回
    zrevrange key start end [withscores]
    //返回排名最低的是三个成员
    zrange user:ranking 0 2 withscores
    1) "kris"
    2) "1"
    3) "frank"
    4) "200"
    5) "tim"
    6) "220"
    

    返回指定分数范围的成员

    zrangebyscore key min max [withscores] [limit offset count]
    zrevrangebyscore key max min [withscores] [limit offset count]
    

    返回指定分数范围成员个数

    zcount key min max
    

    删除指定排名内的升序元素

    zremrangebyrank key start end
    

    删除指定分数范围的成员

    zremrangebyscore key min max
    

    求两个集合交集

    zinterstore destination numkeys key [key ...] [weights weight [weight ...]]
    [aggregate sum|min|max]
    //求交集,结果保存到user:ranking:1_inter_2
    zinterstore user:ranking:1_inter_2 2 user:ranking:1
    user:ranking:2
    

    求并集

    zunionstore destination numkeys key [key ...] [weights weight [weight ...]]
    [aggregate sum|min|max]
    //求并集
    zunionstore user:ranking:1_union_2 2 user:ranking:1
    user:ranking:2
    
    • 内部编码
      i. ziplist(压缩列表):当有序集合的元素个数小于zset-max-ziplist-entries配置(默认128个),同时每个元素的值都小于zset-max-ziplist-value配置(默认64字节)时,Redis会用ziplist来作为有序集合的内部实现,ziplist可以有效减少内存的使用。
      ii. skiplist(跳跃表):当ziplist条件不满足时,有序集合会使用skiplist作为内部实现,因为此时ziplist的读写效率会下降。
    • 使用场景
      i. 用户点赞数排行
      ii. 排行榜
      iii. 展示用户信息及用户分数(例如学校中按学生分数排序)
    展开全文
  • redis五种数据类型

    万次阅读 2020-08-26 21:55:12
    redis的数据类型,以及每种数据类型的使用场景 回答:一共五种 (一)String 这个其实没啥好说的,最常规的set/get操作,value可以是String也可以是数字。一般做一些复杂的计数功能的缓存。 (二)hash 这里value...

    redis的数据类型,以及每种数据类型的使用场景

    回答:一共五种

    (一)String

    这个其实没啥好说的,最常规的set/get操作,value可以是String也可以是数字。一般做一些复杂的计数功能的缓存。

    (二)hash

    这里value存放的是结构化的对象比较方便的就是操作其中的某个字段。博主在做单点登录的时候,就是用这种数据结构存储用户信息,以cookieId作为key,设置30分钟为缓存过期时间,能很好的模拟出类似session的效果。

    (三)list

    使用List的数据结构,可以做简单的消息队列的功能。另外还有一个就是,可以利用lrange命令,做基于redis的分页功能,性能极佳,用户体验好。本人还用一个场景,很合适—取行情信息。就也是个生产者和消费者的场景。LIST可以很好的完成排队,先进先出的原则。

    (四)set

    因为set堆放的是一堆不重复值的集合。所以可以做全局去重的功能。为什么不用JVM自带的Set进行去重?因为我们的系统一般都是集群部署,使用JVM自带的Set,比较麻烦,难道为了一个做一个全局去重,再起一个公共服务,太麻烦了。

    另外,就是利用交集、并集、差集等操作,可以计算共同喜好,全部的喜好,自己独有的喜好等功能。

    (五)sorted set

    sorted set多了一个权重参数score,集合中的元素能够按score进行排列。可以做排行榜应用,取TOP N操作

    展开全文
  • Redis 五种数据类型

    2020-05-27 16:30:14
    Redis支持五种数据类型 String(字符串 Hash(哈希) List(列表) Set(集合) zset(sorted set:有序集合) 类型 简介 特性 场景 String(字符串) 二进制安全 可以包含任何数据,比如jpg图片或者序列化的...

    Redis支持五种数据类型

    • String(字符串
    • Hash(哈希)
    • List(列表)
    • Set(集合)
    • zset(sorted set:有序集合)
    类型 简介 特性 场景
    String(字符串) 二进制安全 可以包含任何数据,比如jpg图片或者序列化的对象,一个键最大能存储512M
    Hash(字典) 键值对集合,即编程语言中的Map类型 适合存储对象,并且可以像数据库中update一个属性一样只修改某一项属性值(Memcached中需要取出整个字符串反序列化成对象修改完再序列化存回去) 存储、读取、修改用户属性
    List(列表) 链表(双向链表) 增删快,提供了操作某一段元素的API 1,最新消息排行等功能(比如朋友圈的时间线) 2,消息队列
    Set(集合) 哈希表实现,元素不重复 1、添加、删除,查找的复杂度都是O(1) 2、为集合提供了求交集、并集、差集等操作 1、共同好友 2、利用唯一性,统计访问网站的所有独立ip 3、好友推荐时,根据tag求交集,大于某个阈值就可以推荐
    Sorted Set(有序集合) 将Set中的元素增加一个权重参数score,元素按score有序排列 数据插入集合时,已经进行天然排序 1、排行榜 2、带权重的消息队列

    String(字符串)

    string类型是二进制安全的,redis的string可以包含任何数据,如图像、序列化对象。一个键最多能存储512MB。二进制安全是指,在传输数据的时候,能保证二进制数据的信息安全,也就是不会被篡改、破译;如果被攻击,能够及时检测出来 。

    • 设置键值 :set key value

    • 获取键值 ,如果不存在此键则返回nil :get key
      在这里插入图片描述

    • 设置多个键值:mset key1 value1 key2 value2

    • 获取多个键值:mget key1 key2
      在这里插入图片描述

    • 设置键值及过期时间,以秒为单位 :setex key seconds value
      在这里插入图片描述

    • 只有在 key 不存在时设置 key 的值。setnx key value
      在这里插入图片描述

    • 同时设置一个或多个 key-value 对,当且仅当所有给定 key 都不存在。MSETNX key value [key value ...]

    • 返回 key 中字符串值的子字符 GETRANGE key start end

    • 将给定 key 的值设为 value ,并返回 key 的旧值(old value)。GETSET key value

    • 将key对应的value加1 。INCR key

    • 将key对应的value加整数 。 INCRBY key increment

    • 将key对应的value减1 。 DECR key

    • 将key对应的value减整数。 DECRBY key decrement

    • 追加值 APPEND key value

    • 获取值长度 STRLEN key

    hash

    Redis hash 是一个string类型的field和value的映射表,hash特别适合用于存储对象。 Redis 中每个 hash 可以存储 2的32次方 - 1 键值对(40多亿)。

    • 设置单个属性 :hset key field value
    • 设置多个属性 :hmset key field1 value1 field2 value2 ...
    • 只有在字段 field 不存在时,设置哈希表字段的值。 HSETNX key field value

    在这里插入图片描述

    • 获取⼀个属性的值 : hget key field
    • 获取多个属性的值 : hmget key field1 field2 ...
    • 获取指定键所有的属性 :hkeys key
    • 获取指定键所有属性的值:hvals key

    在这里插入图片描述

    • 删除属性及值 :hdel key field1 field2 ...
    • 删除整个hash键及值 :del key
    • 判断属性是否存在 : hexists key field

    在这里插入图片描述

    list

    列表是简单的string列表,按照插入顺序排序,可以在列表的头部或者尾部添加元素。

    • 在左侧插⼊数据 :lpush key value1 value2 ...
    • 在右侧插⼊数据 :rpush key value1 value2 ...
    • 在指定元素的前或后插⼊新元素 :linsert key before或after 现有元素 新元素

    在这里插入图片描述

    • 返回列表⾥指定范围内的元素 :lrange key start stop
      • start、stop为元素的下标索引
      • 索引从左侧开始,第⼀个元素为0
      • 索引可以是负数,表示从尾部开始计数,如-1表示最后⼀个元素

    在这里插入图片描述

    • 设置指定索引位置的元素值 :lset key index value
      • 索引从左侧开始,第⼀个元素为0
      • 索引可以是负数,表示尾部开始计数,如-1表示最后⼀个元素

    在这里插入图片描述

    • 移出并获取列表的第一个元素 :lpop key
    • 移出并返回列表最后一个元素 : rpop key

    在这里插入图片描述

    • 删除指定元素: lrem key count value
      • 将列表中前count次出现的值为value的元素移除
      • count > 0: 从头往尾移除
      • count < 0: 从尾往头移除
      • count = 0: 移除所有

    在这里插入图片描述

    • 获取列表长度:llen key
    • 通过索引获取列表中的元素:lindex key index

    在这里插入图片描述

    set

    ⽆序集合,元素为string类型,元素具有唯⼀性,不重复。说明:对于集合没有修改操作。

    • 添加元素 :sadd key member1 member2 ...
    • 返回集合元素个数:scard key
    • 返回key集合所有的元素 :smembers key

    在这里插入图片描述

    zset

    sorted set,有序集合,元素为string类型,元素具有唯⼀性,不重复。每个元素都会关联⼀个double类型的score,表示权重,通过权重将元素从⼩到⼤排序。说明:没有修改操作。

    • 添加元素:zadd key score1 member1 score2 member2 ..

    向键’a4’的集合中添加元素’lisi’、‘wangwu’、‘zhaoliu’、‘zhangsan’,权重分别为4、5、6、3

    在这里插入图片描述

    • 返回指定范围内的元素 :zrange key start stop

    • 返回元素个数:zcard key

    • 返回score值在min和max之间的成员 : zrangebyscore key min max

    • 返回成员member的score值 : zscore key member
      在这里插入图片描述

    • 删除指定元素 :zrem key member1 member2 ..

    • 删除权重在指定范围的元素:zremrangebyscore key min max
      在这里插入图片描述

    展开全文
  • redis 五种数据类型

    2019-02-16 20:47:00
    Redis有以下五种数据类型: String、Hash(类似于javaBean)、List(类似于LinkedList)、Set(类似于HashSet)、有序的Set集合 1、key的命名 key名不要过长,否则影响使用效率; ->因为他的key搜索规则是...

    Redis有以下五种数据类型:

    String、Hash(类似于javaBean)、List(类似于LinkedList)、Set(类似于HashSet)、有序的Set集合

     

    1、key的命名

    key名不要过长,否则影响使用效率;

    ->因为他的key搜索规则是由短到长开始搜索

     

    2、乱码问题

    字符串在redis中是二进制安全的

    二进制安全和数据安全没有关系

    mysql-关系型数据库,所有的关系型数据库都是二进制不安全的【乱码丢失数据】

    ->因为他有频繁的编解码,执行效率低,并且容易乱码

    而redis编码和解码只会发生在客户端。没有频繁的编解码,执行效率很高,不会出现乱码

     

    3、String数据类型常用命令

    set key value

    get key ,如果key不存在,返回(nil)

    del key ,返回值为删除了几条数据

    getset key value 修改,先获取,后修改

    incr key,如果不存在,则会初始化为0后再进行自增

    decr key

    append key value,如果不存在,则会自动创建,返回值为当前字符串的长度

    incryby key increment

    decryby key increment

     

    4、Hash数据类型常用命令

    特点:占用的磁盘空间极少

    flushdb 命令将数据库中的数据全部删除

    hset key field value 设置单个变量的单个键值对

    hmset key field value field2 value2 设置单个变量的多个键值对,用空格分隔

    hget key field value

    hmget key field field2

    hgetall key 获取所有,以键值对双双出现

    hdel key field 删除一个或者多个字段

    del key 删除整个键值对

    hincrby key field increment

    hexists key field 若存在返回1,不存在返回0

    hlen 获取key中的field数量

    hkeys key 获取所有的字段

    hvals key 获取所有的字段值

     

     

    5、List数据类型常用命令

    由于redis操作中,最多的操作是进行元素的增删,所以redis选择了链表

    使用环境:做大数据集合的增删、任务队列

    lrange key start end 获取某个索引范围内的元素值,可以为负数,若为-1,则表示链表尾部的元素

    查询所有元素:lrange key 0 -1

    没有rrange

    lpush key value value2 在链表头部插入元素,如果该链表不存在,则自动创建一个;结果为元素的个数

    rpush key value value2 在链表尾部插入元素

    lpop key 返回并且弹出链表第一个元素,如果key不存在,返回nil

    rpop key 从尾部弹出元素

    llen key 获取元素的个数

    lrem key count value 删除count个值为value的元素,如果count大于0,从头向尾开始删;如果count小于0,则从尾向头开始删,如果count等于0,则删除所有链表中等于value的元素

    ->不过该命令的效率极为低下,不建议使用;讲解说这种方式会为元素赋索引,导致速率变慢

    通过索引替换元素:lset key index value

    在索引前/后插入元素:linsert key before/after pivot value

    这个pivot指的是元素名称,讲解给的说明是不是错的呀

    任务队列操作

    rpoplpush resource destination 将链表的尾部元素弹出并且添加到另一个链表的头部

    ->此处默认的逻辑是,我们插入元素一般是从头部开始插入,所以尾部元素是最先插入的

    循环队列

    rpoplush list1 list1 两个链表是一个即可

     

    6、Set数据类型常用命令

    set能存储特别多的元素,最大元素数量是4亿多

    hashset 无序,不重复

    redis操作中,涉及到两个大数据的并集,交集,差集运算

    sadd key value value2 向set中添加数据

    srem key value value2 删除

    smembers key 获取可以中所有元素

    sismember key member 判断指定成员是否在该set中,返回1或0(无论集合里面有多少元素都可以极快的返回结果)

    集合运算

    差集运算 sdiff A B 属于A但不属于B的元素集合,所以这个与key的顺序有关系

    交集运算 sinter A B C...

    并集运算 sunion A B C...

    scard key 获取set中成员的数量

    srandmember key 随机返回set中的一个成员

    sdiffstore、sinterstore、sunionstore 将返回结果存储在一个集合中

    规范:sinterstore destination A B C...

     

    7、有序Set集合

    使用场景:专门用来做排行榜

    zadd key score member score2 member2

    如 zadd set1 5000 xiaoming 1000 xiaohong

    zscore key member 获取指定成员的分数

    zcard key 获取集合中成员数量

    zrem key member1 member2 删除集合指定成员,批量删除

    zrange key start end [withscores] 获取集合中某个范围内的成员,[withscores]参数表明返回的成员包含其分数,中括号表示可选,分数由小到大

    zrevrange key start stop [withscores] 按照元素的分数从大到小的顺序返回索引范围内的所有元素,包括两端的元素,分数由大到小

    zremrangebyrank key start stop 按照排名范围删除元素(其实就是按照索引进行删除)

    zremrangebyscore key min marx 按照分数范围删除元素

    zrangebyscore key min max [withscores] [limit 0 1] 按照分数范围进行排序,还可以进行分页,按照分数从低到高排序

    zincryby key increment member

    zcount key min max 获取分数在此范围内的成员

    zrank key member 返回成员在集合中的排名,按照索引来的(由小到大)

    zrevrank key member 返回成员在集合中的排名,按照索引来的(由大到小)

     

    8、通用命令

    key * 可以查看所有的key

    key ?

    del key key2...

    exists key

    rename key newkey

    type key 获取key对应的值类型,有序set集合会返回zset,如果不存在,会返回none

    设置key的过期时间,默认为永久生存

    expire key 30 单位:秒

    ttl key 返回 key的剩余生存时间,如果没有设置时间,返回-1,如果超时不存在了,则返回-2

     

    备注:

    1)当某个key中的键值对全部删除后,这个key还存在吗?

    ->不存在了

    2)Jedis 为Java操作redis的工具

    连接后,注意打开端口对应的防火墙

    在java中设置的变量,在Linux中看,看到的是二进制数据,只有在Java中获取时才可以看到解码的数据;

    ->这就是redis二进制安全的体现

    3)配置Jedis连接池

     

    转载于:https://www.cnblogs.com/syjp/p/10389165.html

    展开全文
  • redis五种数据类型和使用场景 string类型 string类型多用于缓存 set key value(value可以为json字符串)setnx多用于分布式锁(后面详细整理) 计数器 incr article:{文章id}:readcount get article:{文章id}:...
  • Redis的特点Redis使用场景Redis数据类型 一、.Redis是什么?Redis是一个完全免费开源的,基于内存的高性能的key-value存储系统,可以用作数据库、缓存和消息中间件。支持多种类型的数据结构.Redis内置数据持久化、...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,194
精华内容 2,077
关键字:

redis五种数据类型

redis 订阅