zoukankan      html  css  js  c++  java
  • Redis数据类型之String字符串类型

    1、字符串(string)

    • string是redis最基本的类型,一个key对应一个value。

    • redis的string可以包含任何数据。包括jpg图片或者序列化的对象。
      单个value值最大上限是1G字节, 如果只用string类型,redis就可以被看作加上持久化特性(服务器重启之后,数据不丢失)的memcache

    • string类型是二进制安全的。意思是redis的string可以包含任何数据。比如jpg图片或者序列化的对象 。

    • string类型是Redis最基本的数据类型,一个键最大能存储512MB。

    二进制安全是指,在传输数据时,保证二进制数据的信息安全,也就是不被篡改、破译等,如果被攻击,能够及时检测出来

    二进制安全特点:
    1、编码、解码发生在客户端完成,执行效率高
    2、不需要频繁的编解码,不会出现乱码

    1.1 String命令

    在这里插入图片描述

    (1)set
    设置键,值
    语法:set 键名称 值
    例如:我们添加一个name=“xiaoqian”的键值对。
    注意:重新设置则直接覆盖。
    在这里插入图片描述

    (2)get
    获取key对应的string值,如果key不存在返回 nil,
    语法:get 键值
    在这里插入图片描述

    • mset key1 value1 ... keyN valueN 一次设置多个key的值
    • mget key1 key2 ... keyN 一次获取多个key的值
      在这里插入图片描述

    (3)incr
    increment 对key的值做加加操作,并返回新的值,每执行一次值加1,值类型要是数据类型。
    语法:incr key
    在这里插入图片描述
    在这里插入图片描述
    decr与incr操作一致,就是减一操作
    在这里插入图片描述
    (4)incrby
    执行加法的命令,可以指定相加的值
    incrby key integer 同incr,加指定值
    decrby key integer 同decr,加指定值
    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述

    • type key // 查看数据类型
      在这里插入图片描述

    赋值语法:
    SET KEY_NAME VALUE
    Redis SET 命令用于设置给定 key 的值。如果 key 已经存储值, SET 就覆写旧值,且无视类型

    SETNX key value //解决分布式锁 方案之一
    只有在 key 不存在时设置 key 的值。Setnx(SET if Not eXists) 命令在指定的 key 不存在时,为 key 设置指定的值
    在这里插入图片描述
    在这里插入图片描述

    MSET key value [key value …]
    同时设置一个或多个 key-value 对

    取值语法:
    GET KEY_NAME
    Redis GET命令用于获取指定 key 的值。如果 key 不存在,返回 nil 。如果key 储存的值不是字符串类型,返回一个错误。
    在这里插入图片描述
    GETRANGE key start end
    用于获取存储在指定 key 中字符串的子字符串。字符串的截取范围由 start 和 end 两个偏移量决定(包括 start 和 end 在内)
    在这里插入图片描述

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

    MGET key1 [key2…]
    获取所有(一个或多个)给定 key 的值

    GETSET语法: GETSET KEY_NAME VALUE
    Getset 命令用于设置指定 key 的值,并返回 key 的旧值,当 key 不存在时,返回 nil

    STRLEN key
    返回 key 所储存的字符串值的长度
    在这里插入图片描述

    删除语法:
    DEL KEY_Name
    删除指定的KEY,如果存在,返回值数字类型。

    自增/自减:
    INCR KEY_Name
    Incr 命令将 key 中储存的数字值增1。如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 INCR 操作
    自增:INCRBY KEY_Name 增量值
    Incrby 命令将 key 中储存的数字加上指定的增量值
    自减:DECR KEY_NAME 或 DECYBY KEY_NAME 减值
    decR 命令将 key 中储存的数字减1

    字符串拼接:APPEND KEY_NAME VALUE
    Append 命令用于为指定的 key 追加至未尾,如果不存在,为其赋值

    1.2 应用场景:

    • 1、String通常用于保存单个字符串或JSON字符串数据
    • 2、因String是二进制安全的,所以你完全可以把一个图片文件的内容作为字符串来存储
    • 3、计数器(常规key-value缓存应用。常规计数: 微博数, 粉丝数)

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

    本文来自博客园,作者:兮动人,转载请注明原文链接:https://www.cnblogs.com/xdr630/p/15254951.html

  • 相关阅读:
    关于extern的用法
    建立CMenu菜单项,实现选中菜单项点击左键响应事件
    数据库常用语句
    圆周率的计算
    C++11中list特有版本的算法
    使用istream迭代器来输入输出数据
    C++中函数重载和函数覆盖的区别
    外置接口请求
    JSON转指定复杂对象
    FastDFS优化
  • 原文地址:https://www.cnblogs.com/xdr630/p/15254951.html
Copyright © 2011-2022 走看看