Redis一共分为五种基本数据类型:String、Hash、List、Set、Zset.

string

  • 内部编码有三种,raw,embstr,int
  • String 是二进制的。可以存储序列化对象,图片,字符串,数值等
  • set和get方法 :设置值 set key value;取值 get key ;删除值 del key
  • setnx(not exists):name 如果不存在进行设置,存在就不需要进行设置了,返回0
  • setex(expired)/psetex(毫秒单位)  :set key 10 value 设置key有效期为10秒,10秒后返回nil
  • setrange  :setrange key index value (index 表示从第几位开始替换)
  • 使用一次性设置多个和获取多个值的mset、mget方法:mset key1 value1 key2 value2 key3 value3 ;mget key1 key2 key3 ;msetnx
  • 一次性设置和取值的getset方法 :set key value ;getset key value1,这个getset key value1返回的是value,使用get vakue得到value1的值
  • incr和decr方法:对某一个值进行递增和递减
  • incrby和decrby方法:对某个值进行指定长度的递增和递减
  • append [name]方法:字符串追加方法
  • strlen [name]方法:获取字符串的长度

HASH

  • Hash类型是String类型的field和value的映射表,或者说一个String集合。它的特别适合存储对象,相比较而言,将一个对象类型存储在Hash类型里要比存储在String类型里占用更少的内存空间,并方便存取整个对象。
  • 形如:hset key field value(含义是 hset是hash集合, key是集合名字 field是字段名 value为其值)使用hget  key field 获取内容,也可以存储多个值
  • hmset可以进行批量存储多个键值对:hmset key field1 value1 field2 value2,也可使用hmget进行批量获取多个键值对。
  • 同样也有hsetnx,和setnx大同小异,不存在则赋值,存在不修改
  • hincrby集合递增。
  • hexists 是否存在key 如果存在返回,不存在返回0
  • hlen 返回hash集合里的所有的键数值
  • hdel 删除指定hash的field
  • hkeys 返回hash里所有的字段
  • hvals 返回hash的所有value
  • hgetall 返回hash里所有的key和value

LIST

  • List类型是一个链表结构的集合,其主要功能有push、pop、获取元素等。更详细的说,List类型是一个双向链表的结构,我们可以通过相关操作进行集合的头部或者尾部添加删除元素,list的设计非常简单精巧,即可以做为栈,又可以作为队列
  • lpush方法: 从头部加入元素(栈) 先进后出: lpush key1 value ;lrange list1 0 -1表示从头取到末尾
  • rpush方法:从尾部加入元素(队列) 先进先出: rpush key2  value rpush list2  value2 lrange key2 0 -1
  • linsert方法:插入元素 Linsert keys before [element] [newelement]
  • LSET key index value 设置 index 位置的list元素的值为 value
  • LREM key count value 从存于 key 的列表里移除前 count 次出现的值为 value 的元素。 这个 count 参数通过下面几种方式影响这个操作
  • count > 0: 从头往尾移除值为 value 的元素
  • count < 0: 从尾往头移除值为 value 的元素
  • count = 0: 移除所有值为 value 的元素
  • LTRIM key start stop 修剪(trim)一个已存在的 list,这样 list 就会只包含指定范围的指定元素。start 和 stop 都是由0开始计数的, 这里的 0 是列表里的第一个元素(表头),1 是第二个元素,以此类推。
  • LPOP key 移除并且返回 key 对应的 list 的第一个元素
  • RPOP key 移除并返回存于 key 的 list 的最后一个元素
  • RPOPLPUSH source destination 原子性地返回并移除存储在 source 的列表的最后一个元素(列表尾部元素), 并把该元素放入存储在 destination 的列表的第一个元素位置(列表头部)
  • LINDEX key index 返回名称为key的list中 index位置的元素
  • LLEN key 返回存储在 key 里的list的长度

SET

  • set集合是string类型的无序集合 ,set是通过intset或者hashtable实现的,对集合我们可以取交集、并集、差集
  • 内部编码有 intset(元素类型是int类型的且元素的个数小于512字节)和hashtable(元素中有非int类型或者个数大于512字节)
  • SADD key member [member ...] 添加一个或多个指定的member元素到集合的 key中, set集合不允许重复元素 smembers查看set集合的元素
  • SREM key member [member ...] 在key集合中移除指定的元素. 如果指定的元素不是key集合中的元素则忽略 如果key集合不存在则被视为一个空的集合,该命令返回0
  • SPOP key [count]随机返回删除的key
  • SDIFF key [key ...] 返回一个集合与给定集合的差集的元素.
  • SDIFFSTORE destination key [key ...] 该命令类似于 SDIFF, 不同之处在于该命令不返回结果集,而是将结果存放在destination集合中.如果destination已经存在, 则将其覆盖重写
  • SINTER key [key ...] 返回指定所有的集合的成员的交集.
  • SINTERSTORE destination key [key ...] 这个命令与SINTER命令类似, 但是它并不是直接返回结果集,而是将结果保存在 destination集合中.
  • SUNION key [key ...] 返回给定的多个集合的并集中的所有成员.
  • SUNIONSTORE destination key [key ...] 该命令作用类似于SUNION命令,不同的是它并不返回结果集,而是将结果存储在destination集合中.
  • SMOVE source destination member 将member从source集合移动到destination集合中. 对于其他的客户端,在特定的时间元素将会作为source或者destination集合的成员出现
  • SCARD key 集合元素的数量,SRANDMEMBER key [count]随机返回一元素
  • SISMEMBER key member 返回成员 member 是否是存储的集合 key的成员
  • 有序集合有两种内部编码方式:ziplist和skiplist

ZSET

  • 元素个数小于128且元素值小于64使用ziplist编码,否则使用skiplist编码
  • ZADD key [NX|XX] [CH] [INCR] score member [score member ...] 将所有指定成员添加到键为key有序集合(sorted set)里面。 添加时可以指定多个分数/成员(score/member)对。 如果指定添加的成员已经是有序集合里面的成员,则会更新改成员的分数(scrore)并更新到正确的排序位置.
  • XX: 仅仅更新存在的成员,不添加新成员。
  • NX: 不更新存在的成员。只添加新成员
  • CH: 修改返回值为发生变化的成员总数,原始是返回新添加成员的总数
  • INCR: 当ZADD指定这个选项时,成员的操作就等同ZINCRBY命令,对成员的分数进行递增操作
  • ZREM key member [member ...]删除名称为key的zset中的元素member
  • ZINCRBY key increment member 为有序集key的成员member的score值加上增量increment
  • ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count] 返回key的有序集合中的分数在min和max之间的所有元素(包括分数等于max或者min的元素)。元素被认为是从低分到高分排序
  • ZREMRANGEBYRANK key start stop 移除有序集key中,指定排名(rank)区间内的所有成员。下标参数start和stop都以0为底,0处是分数最小的那个元素
  • ZRANK key member 返回有序集key中成员member的排名,从小到大。
  • ZREVRANK key member 返回有序集key中成员member的排名,其中有序集成员按score值从大到小排列。
  • ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count] 找到指定区间范围的数据进行返回
  • COUNT key min max 返回有序集key中,score值在min和max之间(默认包括score值等于min或max)的成员个数。

查看

  • 如果使用set test1 value1进行设置,使用命令object encoding test1查看编码方式
  • 字符串39位数以内使用embstr编码,39位以上使用raw编码
  • list编码方式最新的只有quicklist,原先的ziplist和linkedlist已经取消

RedisObject实例讲解

  • 数据类型,参考上图的数据结构
  • 编码方式,参考上图的内部编码
  • 数据指针,key对应的数据存在哪个SDS对象中
  • SDS包含三部分,len表示数据的长度,free表示空闲空间,buffer存储数据

Redis数据的类型相关推荐

  1. 直接在安装了redis的Linux机器上操作redis数据存储类型--hash类型

    一.概述:   我们可以将Redis中的Hashes类型看成具有String Key和String Value的map容器.所以该类型非常适合于存储值对象的信息.如Username.Password和 ...

  2. 直接在安装了redis的Linux机器上操作redis数据存储类型--List类型

    一.概述: 在Redis中,List类型是按照插入顺序排序的字符串链表.和数据结构中的普通链表一样,我们可以在其头部(left)和尾部(right)添加新的元素.在插入时,如果该键并不存在,Redis ...

  3. Redis和nosql简介,api调用;Redis数据功能(String类型的数据处理);List数据结构(及Java调用处理);Hash数据结构;Set数据结构功能;sortedSet(有序集合)数

    1.Redis和nosql简介,api调用 14.1/ nosql介绍 NoSQL:一类新出现的数据库(not only sql),它的特点: 1.  不支持SQL语法 2.  存储结构跟传统关系型数 ...

  4. Redis入门(3): 数据新类型(BitmapsHyperLogLog,GeoSpatial),Jredis,springboot与redis的整合

    Redis新数据类型 Bitmaps 简介 现代计算机用二进制(位) 作为信息的基础单位, 1个字节等于8位, 例如"abc"字符串是由3个字节组成, 但实际在计算机存储时将其用二 ...

  5. 系统性详解Redis操作Hash类型数据(带源码分析及测试结果)

    1 缘起 系统讲解Redis的Hash类型CURD, 帮助学习者系统且准确学习Hash数据操作, 逐步养成测试的好习惯, 本文较长,Hash的操作比较多,请耐心看, 既可以集中时间看,亦可以碎片时间学 ...

  6. redis储存List类型数据

    首先引入Redis <dependency><groupId>redis.clients</groupId><artifactId>jedis</ ...

  7. 在php中存redis数据,redis缓存都存哪些数据

    字符串string: 字符串类型是Redis中最为基础的数据存储类型,是一个由字节组成的序列,他在Redis中是二进制安全的,这便意味着该类型可以接受任何格式的数据,如JPEG图像数据货Json对象描 ...

  8. Redis数据“丢失”问题

    from: https://zhuoroger.github.io/2016/08/14/redis-data-loss/?hmsr=toutiao.io&utm_medium=toutiao ...

  9. Redis数据持久化

    总的来说有两种持久化方案:RDB和AOF RDB方式按照一定的时间间隔对数据集创建基于时间点的快照. AOF方式记录Server收到的写操作到日志文件,在Server重启时通过回放这些写操作来重建数据 ...

最新文章

  1. 获取本地公网ip_本地与远程linux服务器之间传输数据
  2. 【两分钟带你了解树】数据结构04-树结构的概述
  3. 全球与中国OLED大平板涂胶显影设备市场运营状况分析及投资前景建议报告2022-2028年版
  4. Spring运行期间配置文件解析返回
  5. nginx 上传文件漏洞_nginx解析漏洞复现
  6. 667. Beautiful Arrangement II
  7. OpenCV计算机视觉实战(Python版)_003阈值与平滑处理
  8. 全面解读:戴尔”未来就绪的存储保障计划” —— SC系列存储60天无理由退货的影响与意义...
  9. 你先说什么事,我再决定有没有空
  10. 电子计算机中专考试试题,职业中专考试试题
  11. ILSVRC竞赛详细介绍(ImageNet Large Scale Visual Recognition Challenge)
  12. pytorch以图搜图作业
  13. [机器学习入门] 李宏毅机器学习笔记-29 (Sequence Labeling Problem part 1;结构化预测-序列标记 part 1)
  14. 鲁大师11月新机排行:只有5款机型发布,OPPO撑起榜单
  15. 一篇文章,助你实现认知突破,重获新生
  16. Java中的statis用法
  17. c++编程题2——ISBN计算识别码
  18. getline()函数的几点疑惑
  19. Exploring Branch Predictors for Constructing Transient Execution Trojans
  20. RabbitMq中的exclusive

热门文章

  1. python 计算协方差矩阵_opencv2学习:计算协方差矩阵
  2. MySQL笔记——多表查询
  3. 【转】RabbitMQ六种队列模式-3.发布订阅模式
  4. 11单件模式(Singleton Pattern)
  5. C#中struct和class的区别详解
  6. Java实例化对象过程中的内存分配
  7. 一步步编写操作系统 69 汇编语言和c语言共同协作 70
  8. Hexo 双线部署到 Coding Pages 和 GitHub Pages 并实现全站 HTTPS
  9. HashMap和ConcurrentHashMap
  10. 【PAT - 甲级1010】Radix (25分)(二分,进制转化)