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> 以新换旧,设置了新值的同时获取旧值 

 

 

 

 

 

 

 

 

 

原文地址:https://www.cnblogs.com/zly123/p/11730881.html