存储类型:可以用来存储字符串、整数、浮点数。

常用命令:

1. SET key value [EX seconds] [PX milliseconds] [NX|XX]

  1.1 EX seconds : 将键的过期时间设置为 seconds 秒。 执行 SET key value EX seconds 的效果等同于执行 SETEX key seconds value 。

  1.2 PX milliseconds : 将键的过期时间设置为 milliseconds 毫秒。 执行 SET key value PX milliseconds 的效果等同于执行 PSETEX key milliseconds value 。

  1.3 NX : 只在键不存在时, 才对键进行设置操作。 执行 SET key value NX 的效果等同于执行 SETNX key value 。

  1.4 XX : 只在键已经存在时, 才对键进行设置操作。

  1.5 如果ex和px同时写,则以后面的有效期为准

  1.6 因为 SET 命令可以通过参数来实现 SETNX 、 SETEX 以及 PSETEX 命令的效果, 所以 Redis 将来的版本可能会移除并废弃 SETNX 、 SETEX 和 PSETEX 这三个命令。

  1.7 SET 命令只在设置操作成功完成时才返回 OK ; 如果命令使用了 NX 或者 XX 选项, 但是因为条件没达到而造成设置操作未执行,

    那么命令将返回空批量回复(NULL Bulk Reply)。

2. setnx key value: 

      只在键 key 不存在的情况下, 将键 key 的值设置为 value 。

      若键 key 已经存在, 则 SETNX 命令不做任何动作。

      SETNX 是『SET if Not eXists』(如果不存在,则 SET)的简写。

      返回值:命令在设置成功时返回 1 , 设置失败时返回 0 。

3. setex key seconds value:

  将键 key 的值设置为 value , 并将键 key 的生存时间设置为 seconds 秒钟。

  如果键 key 已经存在, 那么 SETEX 命令将覆盖已有的值。

  SETEX 命令的效果和以下两个命令的效果类似:

    SET key value
    EXPIRE key seconds # 设置生存时间

  SETEX 和这两个命令的不同之处在于 SETEX 是一个原子(atomic)操作, 它可以在同一时间内完成设置值和设置过期时间这两个操作,

  因此 SETEX 命令在储存缓存的时候非常实用。

  命令在设置成功时返回 OK 。 当 seconds 参数不合法时, 命令将返回一个错误。

4. PSETEX key milliseconds value: 这个命令和 SETEX 命令相似, 但它以毫秒为单位设置 key 的生存时间, 而不是像 SETEX 命令那样以秒为单位进行设置。

5. get key: 如果键 key 不存在, 那么返回特殊值 nil ; 否则, 返回键 key 的值。

       如果键 key 的值并非字符串类型, 那么返回一个错误, 因为 GET 命令只能用于字符串值

6. getset key value:将键 key 的值设为 value , 并返回键 key 在被设置之前的旧值

      如果键 key 没有旧值, 也即是说, 键 key 在被设置之前并不存在, 那么命令返回 nil 。

      当键 key 存在但不是字符串类型时, 命令返回一个错误。

7. strlen key: 返回键 key 储存的字符串值的长度。

      当键 key 不存在时, 命令返回 0 。

      当 key 储存的不是字符串值时, 返回一个错误。

8. append key value:

    如果键 key 已经存在并且它的值是一个字符串, APPEND 命令将把 value 追加到键 key 现有值的末尾。

    如果 key 不存在, APPEND 就简单地将键 key 的值设为 value , 就像执行 SET key value 一样。

9. setrange key offset value:

    从偏移量 offset 开始, 用 value 参数覆写(overwrite)键 key 储存的字符串值。

    不存在的键 key 当作空白字符串处理。

    SETRANGE 命令会确保字符串足够长以便将 value 设置到指定的偏移量上, 如果键 key 原来储存的字符串长度比偏移量小(比如字符串只有 5 个字符长,

    但你设置的 offset 是 10 ), 那么原字符和偏移量之间的空白将用零字节(zerobytes, "\x00" )进行填充。

    1.SET greeting "hello world"     2.SETRANGE greeting 6 "Redis"   3.GET greeting->"hello Redis"

     2.1 redis> EXISTS empty_string    (integer) 0

     2.2 redis> SETRANGE empty_string 5 "Redis!" # 对不存在的 key 使用 SETRANGE (integer) 11

    2.3 redis> GET empty_string                   # 空白处被"\x00"填充    "\x00\x00\x00\x00\x00Redis!"
10. getrange key start end: 获取字符串中[start, stop]范围的值

    返回键 key 储存的字符串值的指定部分, 字符串的截取范围由 start 和 end 两个偏移量决定 (包括 start 和 end 在内)。

    负数偏移量表示从字符串的末尾开始计数, -1 表示最后一个字符, -2 表示倒数第二个字符, 以此类推。

    注意:当start>length,则返回空字符串

         当stop>=length,则截取至字符串尾

         如果start所处位置在stop右边,则返回空字符串

11. incr key:自增,返回新值

  为键 key 储存的数字值加上一。

  如果键 key 不存在, 那么它的值会先被初始化为 0 , 然后再执行 INCR 命令。

  如果键 key 储存的值不能被解释为数字, 那么 INCR 命令将返回一个错误。

  本操作的值限制在 64 位(bit)有符号数字表示之内。

12. incrby key increment:在加上增量 increment 之后, 键 key 当前的值。

  为键 key 储存的数字值加上增量 increment 。

  如果键 key 不存在, 那么键 key 的值会先被初始化为 0 , 然后再执行 INCRBY 命令。

  如果键 key 储存的值不能被解释为数字, 那么 INCRBY 命令将返回一个错误。

  本操作的值限制在 64 位(bit)有符号数字表示之内。

13. incrbyfloat key increment: 自增浮点数

14. decr key: 返回键 key 在执行减一操作之后的值。

  为键 key 储存的数字值减去一。

  如果键 key 不存在, 那么键 key 的值会先被初始化为 0 , 然后再执行 DECR 操作。

  如果键 key 储存的值不能被解释为数字, 那么 DECR 命令将返回一个错误。

15.decrby key decrement:

  将键 key 储存的整数值减去减量 decrement 。

  如果键 key 不存在, 那么键 key 的值会先被初始化为 0 , 然后再执行 DECRBY 命令。

  如果键 key 储存的值不能被解释为数字, 那么 DECRBY 命令将返回一个错误。

16. mset key value [key value.....]:同时为多个键设置值。

  如果某个给定键已经存在, 那么 MSET 将使用新值去覆盖旧值, 如果这不是你所希望的效果, 请考虑使用 MSETNX 命令, 这个命令只会在所有给定键都不存在的情况下进行设置。

  MSET 是一个原子性(atomic)操作, 所有给定键都会在同一时间内被设置, 不会出现某些键被设置了但是另一些键没有被设置的情况。

17.msetnx key value [key value...]:当所有给定键都设置成功时, 命令返回 1 ; 如果因为某个给定键已经存在而导致设置未能成功执行, 那么命令返回 0 。

  当且仅当所有给定键都不存在时, 为所有给定键设置值。

  即使只有一个给定键已经存在, MSETNX 命令也会拒绝执行对所有键的设置操作。

  MSETNX 是一个原子性(atomic)操作, 所有给定键要么就全部都被设置, 要么就全部都不设置, 不可能出现第三种状态。

18. mget key [key...]: 返回给定的一个或多个字符串键的值

  如果给定的字符串键里面, 有某个键不存在, 那么这个键的值将以特殊值 nil 表示。

应用场景:

  1.缓存: 热点缓存、全页缓存、数据缓存,提升访问速度

  2.数据共享分布式:STRING 类型,因为 Redis 是分布式的独立服务,可以在多个应用之间共享 例如:分布式 Session

  3. 分布式锁

  4. 全局ID: INT 类型,INCRBY,利用原子性

  5. 计数器: INT 类型,INCR 方法 例如:文章的阅读量,微博点赞数,允许一定的延迟,先写入 Redis 再定时同步到数据库。

  6. 限流: INT 类型,INCR 方法 ,以访问者的 IP 和其他信息作为 key,访问一次增加一次计数,超过次数则返回 false

redis-String字符串的更多相关文章

  1. C#操作Redis String字符串

    /// <summary> /// Redis String 操作 /// </summary> public static void Redis_String() { Red ...

  2. redis:string字符串类型的操作

    1. string字符串类型的操作: 1.1. set 设置单个值 语法:set key value [EX seconds] [PX milliseconds] [NX|XX] 注: EX seco ...

  3. Redis学习系列二之.Net开发环境搭建及基础数据结构String字符串

    一.简介 Redis有5种基本数据结构,分别是string.list(列表).hash(字典).set(集合).zset(有序集合),这是必须掌握的5种基本数据结构.注意Redis作为一个键值对缓存系 ...

  4. PHP操作redis之String(字符串)、List(列表)(一)

    Redis 简介 Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库. Redis 与其他 key – value 缓存产品有以下三个特点: Redis支持数据的持久 ...

  5. Redis操作字符串工具类封装,Redis工具类封装

    Redis操作字符串工具类封装,Redis工具类封装 >>>>>>>>>>>>>>>>>>& ...

  6. python之Redis的字符串类型操作

    redis的数据类型: 字符串型    哈希     列表     集合     有序集合 1.String(字符串类型) set  命令:   设置一个键和值,键存在则只覆盖,返回ok > s ...

  7. 【Redis面试题】Redis的字符串是怎么实现的?

    年前本人在找工作面试时在Redis相关问题上可栽了跟头.在面试前按常规套路准备了一下,比如 Redis 的常用5种数据结构,Redis持久化策略,Redis实现分布式锁,简单发布订阅等等都准备了,当时 ...

  8. 理解 Redis(3) - 字符串值

    正如前面所讲的, redis 的数据结构就是一系列的键值对键 -> printable ASCII (可打印的 ASCII 码, 最大值是 512MB)值 -> Primitives (基 ...

  9. [置顶] Redis String类型数据常用的16条命令总结

    Redis String类型数据常用的16条命令总结 描述:String 类型是最简单的类型,一个Key对应一个Value,String类型是二进制安全的.Redis的String可以包含任何数据,比 ...

  10. 第二百九十五节,python操作redis缓存-字符串类型

    python操作redis缓存-字符串类型 首先要安装redis-py模块 python连接redis方式,有两种连接方式,一种是直接连接,一张是通过连接池连接 注意:以后我们都用的连接池方式连接,直 ...

随机推荐

  1. VBA 学习笔记 - 输入框

    学习资料 https://www.yiibai.com/vba/vba_input_box.html 输入框 InputBox 函数说明 提示用户输入值.当输入值后,如果用户单击确定 按钮或按下键盘上 ...

  2. Windows配置本地Hadoop运行环境

    很多人喜欢用Windows本地开发Hadoop程序,这里是一个在Windows下配置Hadoop的教程. 首先去官网下载hadoop,这里需要下载一个工具winutils,这个工具是编译hadoop用 ...

  3. werkeug的WSGI服务器解析

    werkeug的WSGI服务器解析 1.      WSGI 1.1.    wsgi与flask flask默认的wsgi引用自wekurg 声明app:FLASK对象 app.run() run_ ...

  4. 样式计算的几种方式与兼容写法:getComputedStyle&currentStyle&style

    window.getComputedStyle(element,[string]) 1参为需要获取样式的元素,2参指定伪元素字符串(如“::after”,不需要则为null),设置2参可获取eleme ...

  5. ubuntu16.04安装node.js、npm

    ubuntu16.04安装node.js.npm1.请尽量避免在 Ubuntu 上使用 apt-get 来安装 node.js, 如果你已经这么做了,请手动移除: sudo apt-get purge ...

  6. JavaWeb项目音频资源播放解决方案

    一.方式1:登陆系统后进行播放,即在浏览器端 需要在JSP页面编写相关代码 <div id="midea" style="display: none;"& ...

  7. Educational Codeforces Round 79 (Rated for Div. 2) - D. Santa's Bot(数论)

    题意:有$n$个孩子,第$i$个孩子有$k[i]$件想要的礼物,第$j$个礼物为$a[i][j]$,现在随机挑一个孩子,从他想要的礼物里面随机挑一个,然后送给另一个孩子$($这个孩子可以和第一个孩子是 ...

  8. OBS输出设置

    参数建议来自虎牙 https://help.huya.com/284 3.输出: 1)编码器中x264相当于虎牙直播中的CPU H.264编码,NVENC H.264相当于虎牙直播中的NVIDIA H ...

  9. 「JSOI2014」歌剧表演

    「JSOI2014」歌剧表演 传送门 没想到吧我半夜切的 这道题应该算是 \(\text{JSOI2014}\) 里面比较简单的吧... 考虑用集合关系来表示分辨关系,具体地说就是我们把所有演员分成若 ...

  10. Vue中全局监听键盘事件

    全局监听enter键,是把监听事件绑定到document上 常用的keyCode键盘编码在这里:https://www.cnblogs.com/wbyixx/p/12029508.html creat ...