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

常用命令:

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. 服务器(1)——IIS(1)——Windows7中IIS简单安装与配置(详细图解)

    最近工作需要IIS,自己的电脑又是Windows7系统,找了下安装的方法,已经安装成功. 一.首先是安装IIS.打开控制面板,找到“程序与功能”,点进去 二.点击左侧“打开或关闭Windows功能” ...

  2. 吴裕雄--天生自然Numpy库学习笔记:NumPy 创建数组

    import numpy as np x = np.empty([3,2], dtype = int) print (x) import numpy as np # 默认为浮点数 x = np.zer ...

  3. 转发-[原创]ASR1K 在Rommon导入IOS-XE启动

    在相对较老的设备平台可以通过在rommon下使用以下命令导入IOS. rommon 1 > IP_ADDRESS=192.168.1.2rommon 2 > IP_SUBNET_MASK= ...

  4. 2016-2017学年第三次测试赛 习题E 林喵喵算术

    时间限制: 1 Sec  内存限制: 128 MB 提交: 70  解决: 25 提交统计讨论版 题目描述 给你两个八进制数,你需要在八进制计数法的情况下计算a-b. 如果结果为负数,你应该使用负号代 ...

  5. [03] Recursive Function递归应用

    递归应用 1.理解 百科:一种计算过程,如果其中每一步都要用到前一步或前几步的结果,称为递归的: 理解:函数调用自己的过程,这类函数处理的事情具有重复性,处理此类实行可用while或者for,但结构上 ...

  6. JavaScript中关于隐式转换的一些总结

    JavaScript运算符中的隐式转换规律:一.递增递减运算符(前置.后置)1.如果包含的是有效数字字符串或者是有效浮点数字符串,则会将字符串转换(Number())为数值,再进行加减操作,返回值的类 ...

  7. nginx、apache和tomcat之间的关系和区别

    Apache/Nginx 应该叫做 HTTP Server,即安装后生成httpd服务. Tomcat 则是一个 Application Server,或者更准确的来说,是一个「Servlet/JSP ...

  8. ES建立索引步骤, 1,index 2.mapping 3,别名

    1.建立索引PUT /index_trans_detail 2.建立mappingPOST /index_trans_detail/type_trans_detail/_mapping{ " ...

  9. 解决springmvc拦截器拦截静态资源的两种方式

    1.是采用<mvc:default-servlet-handler />,(一般Web应用服务器默认的Servlet名称是"default",所以这里我们激活Tomca ...

  10. MySQL 之单表查询

    数据库数据: # (1) 创建数据表 create table employee( id int primary key auto_increment, emp_name char(12) not n ...