• Redis-字符串类型


    字符串类型:string

    • String是Redis最基本的类型,你可以理解成与Memcached一模一样的类型,一个key对应一个value;
    • String类型是二进制安全的,意味着Redis的string可以包含任何数据。比如jpg图片或者序列化的对象
    • String类型是Redis最基本的数据类型,一个Redis中字符串value最多可以是512M

    常用命令

    • 添加键值对

      set <key> <value>
      
      • 1
    • 获取key对应的value

      get <key>
      
      • 1
    • 将指定value追加到原value的末尾

      append <key> <value>
      
      • 1
    • 获取value的长度

      strlen <key>
      
      • 1
    • 只有当key不存在时对key进行添加

      setnx <key> <value>
      
      • 1
    • 将 key 中储存的数字值增1,只能对数字值操作,如果为空,新增值为1

      incr <key>
      
      • 1
    • 将 key 中储存的数字值减1,只能对数字值操作,如果为空,新增值为-1

      decr <key>
      
      • 1
    • 将key中存储的数字值自定义步长增减

      incrby <key> <step>
      decrby <key> <step>
      
      • 1
      • 2

    原子操作的概念

    • 所谓原子操作是指不会被线程调度机制打断的操作,这种操作一旦开始,就一直运行到结束,中间不会有任何 context switch (切换到另一个线程)
    • 在单线程中, 能够在单条指令中完成的操作都可以认为是"原子操作",因为中断只能发生于指令之间
    • 在多线程中,不能被其它进程(线程)打断的操作就叫原子操作
    • Redis单命令的原子性主要得益于Redis的单线程

    字符串批量操作命令

    • 同时为多个key设置值

      mset <key1> <value1> <key2> <value2> ...
      
      • 1
    • 同时获取多个value

      mget <key1> <key2> ...
      
      • 1
    • 同时设置多个value,且key不存在(原子性:有一个存在则都失败)

      msetnx <key1> <value1> <key2> <value2> ...
      
      • 1

    其他命令

    • 获取子串,从索引start到stop(左闭右闭)

      getrang <key> <start> <stop>
      
      • 1
    • 从指定索引位置使用value覆盖子串

      setrang <key> <index> <value>
      
      • 1
    • 设置键值对的同时设置过期时间(单位:s)

      setex <key> <time> <value>
      
      • 1
    • 以旧换新(读取原始值,并进行写入)

      getset <key> <value>
      
      • 1

    字符串的数据结构

    在这里插入图片描述

    • String的数据结构为简单动态字符串(Simple Dynamic String,缩写SDS)。是可以修改的字符串,内部结构实现上类似于Java的ArrayList,采用预分配冗余空间的方式来减少内存的频繁分配
    • 内部为当前字符串实际分配的空间capacity一般要高于实际字符串长度len。当字符串长度小于1M时,扩容都是加倍现有的空间,如果超过1M,扩容时一次只会多扩1M的空间。需要注意的是字符串最大长度为512M
  • 相关阅读:
    k8s2-4控制器操作指令
    如何理解volatile关键字?
    一、K8s中的一些重要概念和常用指令
    免安装版MySQL(解压版)安装详细教程及注意事项
    (Spring笔记)AspectJ后置通知——@AfterReturning切面开发
    DO-178C Standard
    python使用grpc
    ZooKeeper 单机版的安装/jdk环境搭建
    一文让你掌握Vue的状态管理机Vuex
    如果有10个词,我想从中取3个词,然后把所有的10选3的可能统计记录下来,该怎么做?...
  • 原文地址:https://blog.csdn.net/qq_52751442/article/details/125551032