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

常用命令:

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. 线段树——I hate it

    [问题描述]     很多学校流行一种比较的习惯.老师们很喜欢询问,从某某到某某当中,分数最高的是多少.这让很多学生很反感.    不管你喜不喜欢,现在需要你做的是,就是按照老师的要求,写一个程序,模 ...

  2. DVWA实验之Brute Force(暴力破解)- Medium

    DVWA实验之Brute Force(暴力破解)- Medium   有关DVWA环境搭建的教程请参考: https://www.cnblogs.com/0yst3r-2046/p/10928380. ...

  3. C#多个泛型约束问题

    多个约束之间使用逗号隔开,但不重复T约束. 1. private void AddControl<T>(TabPage tabPage, T userControl) where T: U ...

  4. 【PAT甲级】1041 Be Unique (20 分)(多重集)

    题意: 输入一个正整数N(<=1e5),接下来输入N个正整数.输出第一个独特的数(N个数中没有第二个和他相等的),如果没有这样的数就输出"None". AAAAAccepte ...

  5. [阿里移动推荐算法]比赛_快速入门_4_19_update_仅供参考,思维不要受局限

    [这里只讲快速入门——即破题,正负样本不平衡.特征数量等问题就自己多看论文或者其他资料吧~~如果还有数据挖掘相关基础知识不了解的,建议看看<数据挖掘导论>] [以下是理解错误案例]:错误的 ...

  6. 第七届蓝桥杯javaB组真题解析-抽签(第五题)

    题目 /* 抽签 X星球要派出一个5人组成的观察团前往W星. 其中: A国最多可以派出4人. B国最多可以派出2人. C国最多可以派出2人. .... 那么最终派往W星的观察团会有多少种国别的不同组合 ...

  7. Inject shellcode into PE file

    先声明这是不免杀的,只是演示. 哔哩哔哩视频 新增节 一般能实现特定功能的shellcode的长度都比较长,可以分到几个节上的空白区,但是这样麻烦啊,或者把最后一个节扩大,但是最后一个节一般没有执行的 ...

  8. 面试问题之——给你图片的url,你能知道它所占的字节空间吗?

    从一个需求说起 这标题起得有点标题党,实际情况是我最近在做一个公司内部工具时,遇到了这么一个需求,给定一个静态资源站点上某张图片的url(比如https://a.xxxcdn.com/demo.jpg ...

  9. IELTS Writing Task 1: two-chart answer

    Thursday, January 09, 2020 The chart below shows the value of one country's exports in various categ ...

  10. KNN-学习笔记

    仅供学习使用 练习1 # coding:utf-8 # 2019/10/16 16:49 # huihui # ref: import numpy as np from sklearn import ...