Redis数据库技术--数据结构

Redis数据结构

五种数据类型

  1. 字符串(String)
  2. 字符串列表(list)
  3. 有序字符串集合(sorted set)
  4. 哈希(hash)
  5. 字符串集合(set)

Key定义的注意点

  1. 不要过长,一般不超过1024字节
  2. 不要过短,过段会降低redis查找效率
  3. 最好有统一的命名规范

存储String

在redis中以二进制 方式存储,存入和获取的数据相同

Value最多可以容纳的数据长度为512M

  • 存储String常用命令:
    • 赋值
      set keys values
    • 取值
      get keys
    • 删除
      del keys
    • 数值增减
      incr keys(递增)
      decr keys(递减)
      如果keys存在,且可以转换为整数类型,则进行递增或递减,如果是字符串类型无法转换为整数,则会报错,如果可以说不存在,则会创建keys并为其赋值为0,在进行递增递减操作
    • 扩展命令
      incrby keys values(如果keys存在,则为keys增加指定values值 的数,如果不存在,则会创建keys并为其赋值为0,再进行增值)
      decrby keys values(如果keys存在,则为keys减少指定values值的数,如果不存在,则会创建keys并为其赋值为0,再进行减值)
      append keys values(字符串追加,再keys后面追加字符串values;如果keys不存在,则创建keys,其值就是values)

存储Hash

可以看成是String Key和String Value的map容器

每一个Hash可以存储4294967295个键值对

  • 存储Hash常用命令:
    • 赋值
      hset 键值对 keys values(单个赋值)
      hmset 键值对 keys1 values1 keys2 values2(多个赋值)
    • 取值
      hget 键值对 keys(单个取值)
      hmget 键值对 keys1 keys2(多个取值)
      hgetall 键值对(取值键值对中的所有keys和values)
    • 删除
      hdel 键值对 keys1 keys2(删除指定keys)
      del 键值对(删除整个键值对)
    • 增加数字
      hincrby 键值对 keys values(键值对中指定keys增加values值)
    • 自学命令
      hexists 键值对 keys(判断键值对中keys是否存在,如果存在返回 1,否则返回0)
      hlen 键值对(获取键值对中有几个属性)
      hkeys 键值对(获取键值对中有几个key)
      hvals 键值对(获取键值对中有几个value)

存储list

arrayList使用数组方式

LinkedList使用双向链接方式

双向链表中增加数据

双向链表中删除数据

  • 存储list常用命令:
    • 两端添加
      lpush keys value1 value2 value3(左添加)
      rpush keys value1 value2 value3(右添加)
    • 查看列表
      lrange keys start end(列出keys键值,从start开始,到end结 束,0代表第一位,-1代表最后一位,-2代表倒数第二位)
    • 两端弹出
      lpop keys(左弹出,左边弹出第一位,即删除左边第一位)
      rpop keys(右弹出,右边弹出第一位,即删除右边第一位)
    • 获取列表元素个数
      llen keys(获取keys元素个数)
    • 扩展命令
      lpushx keys values(如果keys存在,则在其左边添加字符values)
      rpushx keys values(如果keys存在,则在其右边添加字符values)
      lrem keys count values(删除keys中指定的值,count如果大于0,则从keys最左边开始删除count个数的values;如果等于0,则删除全部的values;如果小于0,则从keys最右边开始删除count个数的values)
      lset keys subscript values(更改keys的subscript角标处为values字符)
      linsert keys before value1 value2(在第一个value1的前面插入value2)
      linsert keys after value1 value2(在第一个value1的后面插入value2)
      rpoplpush keys1 keys2(将keys1的右边一位弹出,并压入keys2的左边)

存储Set

和List类型不同的是,Set集合中不允许出现重复的元素

Set可包含的最大元素数量是4294967295

  • 存储set常用命令:
    • 添加/删除元素
      sadd keys value1 value2 value3(添加元素)
      srem keys value1 value2(删除元素)
    • 获得集合中的元素
      smembers keys(查看指定keys中有哪些元素)
      sismember keys values(判断keys中是否有指定的values元素)
    • 集合中的差集运算
      sdiff key1 key2(显示key1和key2的不同部分)
    • 集合中的交集运算
      sinter key1 key2(显示key1和key2的相同部分)
    • 集合中的并集运算
      sunion key1 key2(将key1和key2合并显示)
    • 扩展命令
      scard keys(获取keys中的元素数量)
      srandmember keys(随机返回keys中的一个元素)
      sdiffstore key3 key1 key2(将key1和key2不同的部分存入key3)
      sinterstore key3 key1 key2(将key1和key2相同的部分存入key3)
      sunionstore key3 key1 key2(将key1和key2合并存入key3)
  • 存储Set使用场景
    • 跟踪一些唯一性数据
    • 用于维护数据对象之间的关联关系

存储Sorted-Set

  • Sorted-Set和Set的区别

    Sorted-Set中的每一个成员都会有一个分数与之关联,redis通过该分数对集合中的成员进行从小到大的排序

    Sorted-Set中的成员在集合和的位置是有序的

  • 存储Sorted-Set常用命令:

    • 添加元素
      zadd keys 分数 value1 分数 value2(添加元素,注意元素前面要加 上对应的分数,比如60、70、100等,如果添加的元素已经存在,则会更 新其分数)
    • 获得元素
      zscore keys values(获得指定元素的分数)
      zcard keys(获得keys中的元素个数)
    • 删除元素
      zrem keys value1 value2(删除指定元素)
    • 范围查询
      zrange keys start end(查询start到end范围的元素)
      zrange keys start end withscores(查询start到end范围的元素及其分数)
      zrevrange keys start end withscores(按照从大到小的顺序排序)
      zremrangebyrank keys start end(按照位置范围进行删除)
      zremrangebyscore keys start end(按照分数范围进行删除,注意start和end是分数大小)
    • 扩展命令
      zrangebyscore keys start end withscores limit start end(查 询分数范围的元素及其分数大小,并利用limit进行分页)
      zincrby keys values 元素(增加指定元素values值)
      zcount keys start end(显示start到end之间的元素个数)
  • Sorted-Set使用场景

    • 如大型在线游戏积分排行榜
    • 构建索引数据
相关推荐
朴拙数科27 分钟前
mysql报错解决 `1525 - Incorrect DATETIME value: ‘0000-00-00 00:00:00‘`
android·数据库·mysql
索然无味io1 小时前
SQL注入--Access注入
数据库·笔记·sql·学习·mysql·网络安全
寂然如故1 小时前
单片机的选择因素
数据库·mongodb
Light602 小时前
从混沌到清晰:全面解析非结构化数据治理!
数据库·数据挖掘·数据安全·数据资产·非结构化数据
浩浩测试一下2 小时前
渗透测试之SQLMAP工具详解 kali自带SQLmap解释 重点sqlmap --tamper 使用方式详解 搞完你就很nice了
数据库·安全·web安全·网络安全·系统安全·安全架构
数据的世界012 小时前
SQL中的分组数据
数据库·sql
OTWOL3 小时前
预处理基础指南
开发语言·数据结构·c++·算法
Json_181790144803 小时前
API接口示例:电商商品评论数据
服务器·前端·数据库
明达技术3 小时前
MBox20网关助力汽车零部件企业实现与效率飞跃
运维·网络·数据库
Muisti3 小时前
209. 长度最小的子数组
java·数据结构·算法