• Redis05——Redis五大数据类型 String


    String

    1. String是Redis最基本的数据类型(较常用),一个key对应一个value
    2. string类型是二进制安全的,Redis的string可以包含任何数据
    3. 一个Redis中字符串value最多是512M

    set和setnx的区别:

       set: 如果不存在key,则直接创建,如果存在,将key对应的value值覆盖掉

    setnx:如果不存在key,则直接创建,如果存在对key进行操作,返回的结果是0,相当于false

    incr key 操作的原子性

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

    l  思考: java中i++是否是原子操作?

          i++并不具有原子性

       i++有三个步骤:

      •   取值
      •   运算
      •   赋值
     get <key>  查询对应键值
     set <key> <value>  添加键值对
     append <key> <value>  将给定的value追加到原值的末尾
     strlen <key>  获取值的长度
     senx <key> <value>  只有在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> 同时获取一个或者多个value
    msetnx <key1> <value1> <key2> <value2> 同时设置一个或多个key-value对,当且仅当所有给定的key都不存在
    getrange <key> <起始位置> <结束位置> 获得值的范围,类似java中的substring(包头包尾)
    setrange <key> <起始位置> <value> 用<value>覆盖<key>所存储的字符串值,从<起始位置>开始
    setex <key> <过期时间> <value> 设置键值的同时,设置过去时间,单位秒 
    getset <key> <value> 以新换旧,设置了新值的同时获取旧值 

     

     

     

     

     

     

     

     

     

  • 相关阅读:
    STL::next_permutation();
    P2626 斐波那契数列(升级版)
    P1029 最大公约数和最小公倍数问题
    P1075 质因数分解
    4.7生日当天测
    cin,scanf,gets,getline,cin.getline对于字符串的输入
    两个互质的数不能凑出来的数证明
    简单的全排列问题(给初学者)
    紫书 例题 10-22 UVa 1640(数位统计)
    紫书 例题 10-21 UVa 11971(连续概率)
  • 原文地址:https://www.cnblogs.com/zly123/p/11730881.html
Copyright © 2020-2023  润新知