• 2019版:第三章:(2)Redis 五大数据类型 之 String


    一、String 类型

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

    二、常用操作  

    get <key>
    查询对应键值
    set <key> <value>
    添加键值对
    append <key> <value>
    将给定的 <value> 追加到原值的末尾
    strlen <key>
    获取值的长度
    setnx <key> <value>
    只有在key不存在时设置key的值,key存在时,不进行修改
    incr <key>
    将key中存储的数字值增1;
    只能对数字值操作,如果为空,新增值为1
    decr <key>
    将key中存储的数字值减1;
    只能对数字之操作,如果为空,新增值为 -1
    incrby / decrby <key> 步长
    将 key 中存储的数字值增减,自定义步长
    mset <key1> <value1> <key2> <value2>
    同时设置一个或多个 key-value 对
    mget <key1> <key2> <key3>
    同时获取一个或多个 value
    msetnx <key1><value1><key2><value2>
    同时设置一个或多个key-value对,当且仅当所有给定的key都不存在
    getrange <key><起始位置><结束位置>
    获取值的范围,类似java中的substring
    setrange <key> <起始位置> <value>
    用<value>覆盖<key>所存储的字符串值,从<起始位置>开始
    setex <key> <过期时间> <value>
    设置键值的同时,设置过期时间,单位秒
    getset <key> <value>
    以新换旧,设置了新值的同时获取旧值

    三、详说 incr key 操作的原子性

      1、所谓原子操作是指不会被线程调度机制打断的操作;这种操作一旦开始,就一直运行到结束,中间不会有任何 context switch(切换到另一个线程)。
        
      2、在单线程中,能够在单条指令中完成的操作都可以认为是“原子操作”,因为中断只能发生于指令之间;
      3、在多线程中,不能被其他进行(线程)打断的操作就叫原子操作;
      4、Redis 单命令的原子性主要得益于 Redis 的单线程
      5、思考:java 中的 i++ 是否是原子操作?
               不是原子操作:
                i++:可以拆分为三步:
    1、读内存到寄存器
    2、在寄存器中自增
    3、写会内存中
    

      

     
     
     
  • 相关阅读:
    要给自己留时间思考
    联表更新 Update Left Join
    SQLServer2014内存优化表评测
    SQL Server中数据库文件的存放方式,文件和文件组
    {好文备份}SQL索引一步到位
    qt调用js,js调用qt
    【转】vs2010打开qt的.pro文件时错误解决办法
    qt多线程信号槽传输方式
    【转】设置Qt应用程序图标及应用程序名
    【转】Qt多线程操作界面---在QThread更新QProgressBar
  • 原文地址:https://www.cnblogs.com/niujifei/p/15791730.html
Copyright © 2020-2023  润新知