redis的String类型

零、一些基本概念

  • String类型使redis的最基本的数据类型,一个键最大存储512MB
  • String数据结构式简单的key-value类型,value其不仅是String,也可以是数字,是包含很多种类型的特殊类型
  • String类型使二进制安全的,(字符串不是根据某种特殊的标志来解析的,无论输入是什么,总能保证输出是处理的原始输入而不是根据某种特殊格式来处理)的,可以包含任何数据,比如序列化的对象存储,比如一张图片进行二进制存储,比如一个简单的字符串,数值等。

一、String类型的常用命令

赋值语法

  • set key_name value
    多次设置同一个name的值会被覆盖,且无视类型。
  • setnx key1 value
    (not exist)
    如果keyi1不存在,则设值 并返回1。
    如果key1存在,则不设置值并返回0。
    引申: 解决分布式锁方案之一,只有在key不存在时设置key的值。setnx(set if Not exists)命令在指定的key不存在时,为key设置指定的值。
  • setex key1 10 lx
    (expired)
    设置key1的值为lx,过期时间为10秒,10秒后key1清除(key也清除)
  • setrange string range value
    替换字符串

取值语法

  • get key_name
    redis get命令获取指定key的值
    如果key不存在,返回nil
    如果key存储的值不是字符串类型,返回一个错误

  • getrange key start end
    用于获取存储在指定key中字符串的子字符串。字符串的截取范围由start和end两个偏移量决定(包括start和end在内)

  • getbit key offset
    对key所存储的字符串值,获取指定偏移量上的位(bit)

  • getset 语法
    getset key_name value
    getset 命令用于设置指定key的值,并返回key的旧值,当key不存在时,返回nil

  • setlen key
    返回key所存储的字符串值的长度

删除语法

  • DEL key_name
    删除指定的key,如果存在,返回值数据类型

批量操作

  • 批量写
    mset k1 v1 k2 v2 k3 v3 一次性写入多个值

  • 批量读
    mget k1 k2 k3

  • getset name value
    一次性设置和读取(返回旧值,写上新值)

自增/自减:

  • INGR KEY-Name:
    Incr 命令将 key 中存的数字值 1, 如果 key 不存在,那么 key 的值会先被初始化为 0,然后再执行 INCR 操作
  • 自增
    INCRBY KEY Name:増量值Inorby 命令将 key 中储存的数字加上指定的增量值
  • 自滅
    DECR KEY_NAME 或 DECYBY KEY_NAME 减值:DECR 命令将 key 中储存的数字减 1
    :(注意这些 key 对应的必须是数字类型字符串,否则会出错,)

字符拼接:APPEND KEY_ NAME VALUE

Append 命令用于为指定的 key 追加至未尾,如果不存在,为其赋值

字符长度:STRLEN key

二、 String类型的应用场景

  • 1、Stringi 通常用于保存单个字符串或 json 字符串数据

  • 2、因 String 是二进制安全的,所以你完全可以把一个图片文件的内容作为字符串来存储

  • 3、计数器(常规 key-value 线存应用。常规计数:微博数,粉丝数)

INCR 等指令本身就具有原子操作的特性,所以我们完全可以利用 Redis 的 NCR、INCRBY、DECR、DECRBY 等指令来实现原子计数的效果。假如,在某种场景下有 3 个客户端同时读取了 minum 的值(值为 2),然后对其同时进行了加 1 的操作,那么,最后 bynum 的值一定是 5。不少网站都利用 reds 的这个特性来实现业务上的统计计数需求。

你可能感兴趣的:(redis的String类型)