五种基本数据类型

redis无论什么数据类型,在数据库中都是以key-value形式保存,并且所有的key(键)都是字符串,所以讨论基础数据结构都是讨论的value值的数据类型

主要包括常见的5种数据类型,分别是:String、List、Set、Zset、Hash

结构类型 结构存储的值 结构的读写能力
String字符串 可以是字符串、整数或浮点数 对整个字符串或字符串的一部分进行操作;对整数或浮点数进行自增或自减操作;
List列表 一个链表,链表上的每个节点都包含一个字符串 对链表的两端进行push和pop操作,读取单个或多个元素;根据值查找或删除元素;
Set集合 包含字符串的无序集合 字符串的集合,包含基础的方法有看是否存在添加、获取、删除;还包含计算交集、并集、差集等
Hash散列 包含键值对的无序散列表 包含方法有添加、获取、删除单个元素
Zset有序集合 和散列一样,用于存储键值对 字符串成员与浮点数分数之间的有序映射;元素的排列顺序由分数的大小决定;包含方法有添加、获取、删除单个元素以及根据分值范围或成员来获取元素

String字符串

简介

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

  • String类型是二进制安全的,意思是redis的string可以包含任何数据,比如jpg图片或者序列化的对象。
  • String类型是redis最基本的数据类型,一个redis中字符串value最多可以是512M

命令

基本操作

  • set (key) (value):设置键值对
  • setnx (key) (value):防止覆盖,设置键值对,
    • 如果key不存在就设置,返回1
    • 如果key已经存在就不设置,返回0
  • get(key):获取key对应的value
  • getset (key) (value) :先get再set,返回旧值,如果没有旧值返回nil
  • append (key) (value):向指定的key的value后追加字符串
  • del (key) :删除key
  • strlen (key):获取key对应值的字符串长度

数字value的加减

  • incr (key) :value + 1
  • decr (key) :value - 1
  • incrby (key) (number):value + number
  • decrby (key) (number):value - number

获取或者设置指定范围内的值

  • getrange (key) (begin) (end) :获取[begin,end]下标范围内的值,如果是(0,1)就是获取所有值
  • setrange (key) (begin) (xxxx) :从begin下标开始设置xxx值,将原有的替换掉

设置键值过期时间

  • setex (key) (seconds) expire:设置键过期时间
  • ttl (key) :查看key剩余存活时间

同时设置或获取多个key-value

  • met (key1) (value1) (key2) (value2):用于同时设置一个或多个 key-value 对
  • mget (key1) (key2) :返回所有(一个或多个)给定 key 的值(如果某个key不存在,不存在的key返回null)
  • msetnx(key1) (value1) (key2) (value2):当所有 key 都成功设置,返回 1 。 如果有一个key设置失败,所有的key设置都会失败,返回 0 。原子操作

使用场景

实战场景

  • 缓存: 经典使用场景,把常用信息,字符串,图片或者视频等信息放到redis中,redis作为缓存层,mysql做持久化层,降低mysql的读写压力
  • 计数器:redis是单线程模型,一个命令执行完才会执行下一个,同时数据可以一步落地到其他的数据源。
  • session:常见方案spring session + redis实现session共享,

编码与底层结构

字符串是Redis最基本的数据类型,不仅所有key都是字符串类型,其它几种数据类型构成的元素也是字符串。注意字符串的长度不能超过512M。

编码

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hYsLFl0o-1651558697727)(Redis.assets/image-20220106194438014.png)]

字符串对象的编码可以是intraw或者embstr

  1. int 编码:保存的是可以用 long 类型表示的整数值
  2. embstr 编码:保存长度小于44字节短字符串(redis3.2版本之前是39字节,之后是44字节)
  • 对其进行修改后变成raw编码,无论是否达到44字节
  1. raw 编码:保存长度大于44字节长字符串(redis3.2版本之前是39字节,之后是44字节)

内存布局

字符串对象支持三种编码方式: RAW, INT, EMBSTR, 三种方式的内存布局分别如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SBpOnVpM-1651558697728)(https://pdai-1257820000.cos.ap-beijing.myqcloud.com/pdai.tech/public/_images/db/redis/db-redis-ds-x-21.png)]

Redis五种基本数据类型相关推荐

  1. Redis五种基本数据类型底层详解(原理篇)

    Redis五种基本数据类型底层详解 详细介绍Redis用到的数据结构 简单动态字符串 SDS和C字符串的区别 总结 链表 字典 哈希表 字典 哈希算法 解决键冲突 rehash(重点) 渐进式reha ...

  2. Redis五种基本数据类型(超级详细)

    目录 前言 一.String类型常见命令 二.Hash类型的常见命令 三.List类型的常见命令 四.Set类型常见命令 五.SortedSet类型常见命令 前言 提示:Redis五种基本数据类型(超 ...

  3. 深入浅出Redis五种基本数据类型

    文章目录 1.String SDS(Simple Dynamic String) 2.RedisDB设计 3.List 4.Hash 5.Set intset 6.ZSet skiplist 1.St ...

  4. redis五种数据类型的应用场景_Redis五种不同的数据类型

    一.redis集群测试环境搭建 参考文章:https://www.jianshu.com/p/0a2f8f80983a redis-cli -c -h 10.96.87.129 -p 7001注意:- ...

  5. redis种类型对应java类型_Redis的五种基本数据类型介绍

    Redis作为缓存具有极其丰富的功能,比如计数器.好友关系以及排行榜等等.而Redis之所能够实现如此强大的功能,完全是依赖着它的基本数据结构.今天我们来看看Redis的五种基本的数据结构,分别是字符 ...

  6. Redis五种数据类型及应用场景

    Redis五种数据类型及应用场景 MySql+Memcached架构的问题 实际MySQL是适合进行海量数据存储的,通过Memcached将热点数据加载到cache,加速访问,很多公司都曾经使用过这样 ...

  7. Redis五种数据类型介绍

    概述 Redis的键值可以使用物种数据类型:字符串,散列表,列表,集合,有序集合.本文详细介绍这五种数据类型的使用方法.本文命令介绍部分只是列举了基本的命令,至于具体的使用示例,可以参考Redis官方 ...

  8. redis五种数据类型的使用场景

    string 1.String 常用命令: 除了get.set.incr.decr mget等操作外,Redis还提供了下面一些操作: 获取字符串长度 往字符串append内容 设置和获取字符串的某一 ...

  9. Redis五种数据类型及命令(一)

    Redis 五种数据类型详解及命令 Redis五种数据类型分别为: String:最基本的字符串类型. list:列表(如果对比java来看,这个list不是ArrayList,而是LinkedLis ...

最新文章

  1. Python 快速生成 web 动态展示机器学习项目!
  2. 香奈儿的 AI 实验室里,发生了什么?
  3. P2888 [USACO07NOV]牛栏Cow Hurdles(Floyd算法)
  4. PHP 语言结构(Language constructs)和函数的区别
  5. css清除浮动方法总结
  6. QPixmap QImage 相互转化
  7. Go 语言实现 23 种设计模式(修饰器)
  8. 周末之个人杂想(四)
  9. 小米线刷一直显示flashing_小米空调质量怎么样 小米空调一晚上多少电 看完这篇你就有数了...
  10. Java-虚拟机-局部变量表
  11. 液晶显示屏怎么显示泰文_上海工业液晶显示屏厂家
  12. [Remoting]在.NET環境實作Flex 3 Remoting - (2) Flex Builder 環境設定
  13. 6.字符串截取数据求平均分
  14. 高等数学-用等价无穷小求极限题集
  15. Machine learning approximation algorithmsfor high-dimensional fully nonlinear PDE
  16. 职业教育相关的核心期刊有哪些?
  17. AXD 查看register笔记
  18. 无所不能,传感器黑科技层出不穷
  19. 简单的了解一下MySQL连接查询
  20. 学习EBS建议有的知识

热门文章

  1. 取消了移动WAP无限流量
  2. C. Colorful Bricks(dp)
  3. Shader入门---曲面细分着色器和几何着色器
  4. “大数据时代下的地理信息可视化:ECharts地图和数据面板实践“
  5. 第78句 2020年地球日:霍金留给世界的遗言比以往任何时候都更有意义
  6. 29 获取ApplicationContext
  7. 自定义Dialog使用场景
  8. ORB(Oriented FAST and Rotated BRIEF) 特征点
  9. 如何用Python创建微信机器人?你知道吗
  10. 职场上个人的核心技术_职场上千万要对这三个人做背景调查,否则就会出大事 !...