redis-String字符串
存储类型:可以用来存储字符串、整数、浮点数。
常用命令:
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字符串的更多相关文章
- C#操作Redis String字符串
/// <summary> /// Redis String 操作 /// </summary> public static void Redis_String() { Red ...
- redis:string字符串类型的操作
1. string字符串类型的操作: 1.1. set 设置单个值 语法:set key value [EX seconds] [PX milliseconds] [NX|XX] 注: EX seco ...
- Redis学习系列二之.Net开发环境搭建及基础数据结构String字符串
一.简介 Redis有5种基本数据结构,分别是string.list(列表).hash(字典).set(集合).zset(有序集合),这是必须掌握的5种基本数据结构.注意Redis作为一个键值对缓存系 ...
- PHP操作redis之String(字符串)、List(列表)(一)
Redis 简介 Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库. Redis 与其他 key – value 缓存产品有以下三个特点: Redis支持数据的持久 ...
- Redis操作字符串工具类封装,Redis工具类封装
Redis操作字符串工具类封装,Redis工具类封装 >>>>>>>>>>>>>>>>>>& ...
- python之Redis的字符串类型操作
redis的数据类型: 字符串型 哈希 列表 集合 有序集合 1.String(字符串类型) set 命令: 设置一个键和值,键存在则只覆盖,返回ok > s ...
- 【Redis面试题】Redis的字符串是怎么实现的?
年前本人在找工作面试时在Redis相关问题上可栽了跟头.在面试前按常规套路准备了一下,比如 Redis 的常用5种数据结构,Redis持久化策略,Redis实现分布式锁,简单发布订阅等等都准备了,当时 ...
- 理解 Redis(3) - 字符串值
正如前面所讲的, redis 的数据结构就是一系列的键值对键 -> printable ASCII (可打印的 ASCII 码, 最大值是 512MB)值 -> Primitives (基 ...
- [置顶] Redis String类型数据常用的16条命令总结
Redis String类型数据常用的16条命令总结 描述:String 类型是最简单的类型,一个Key对应一个Value,String类型是二进制安全的.Redis的String可以包含任何数据,比 ...
- 第二百九十五节,python操作redis缓存-字符串类型
python操作redis缓存-字符串类型 首先要安装redis-py模块 python连接redis方式,有两种连接方式,一种是直接连接,一张是通过连接池连接 注意:以后我们都用的连接池方式连接,直 ...
随机推荐
- Spark Streaming实践和优化
发表于:<程序员>杂志2016年2月刊.链接:http://geek.csdn.net/news/detail/54500 作者:徐鑫,董西成 在流式计算领域,Spark Streamin ...
- VScode使用入门
使用命令行打开 vscode 如何获取code命令 一般来说,当windows安装了vscode之后,重启之后就可以使用 code 这个命令 也可以直接将vscode直接加入到环境变量中进行使用 命令 ...
- IO课堂测试
一,用户需求 英语的26 个字母的频率在一本小说中是如何分布的?某类型文章中常出现的单词是什么?某作家最常用的词汇是什么?<哈利波特与魔法石> 中最常用的短语是什么,等等. (1)要求1: ...
- CF908D 【New Year and Arbitrary Arrangement】
蒟蒻渣渣禹小心翼翼发布题解.... 这道题,嗯,期望,dp,好,我们有思路了.... however, 主要问题在于字符串无限延伸,so,我们需要考虑记录前缀的关键量来为DP设置终止状态. 我们不妨设 ...
- 【PAT甲级】1062 Talent and Virtue (25 分)
题意: 输入三个正整数N,L,H(N<=1E5,L>=60,H<100,H>L),分别代表人数,及格线和高水平线.接着输入N行数据,每行包括一个人的ID,道德数值和才能数值.一 ...
- RPC远程服务调用
RPC远程服务调用: RPC 的全称是 Remote Procedure Call 是一种进程间通信方式. 它允许程序调用另一个地址空间(通常是共享网络的另一台机器上)的过程或函数,而不用程序员显式编 ...
- centos8 docker安装
官方参考地址:https://docs.docker.com/install/linux/docker-ce/centos/ 下载地址: https://download.docker.com/lin ...
- Java直通车——类与对象篇
一.面向对象 教师节来临,一群小学生应召出黑板报,该怎样完成呢?对于一个小孩子来说,你告诉他:“我们要确定黑板报主题.明确内容要旨.搜寻具体内容.构思版面布局.画图和写字.安排人员后勤辅助.”他可能会 ...
- Jquery练习1
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- 2.1.1Remove Duplicates from Sorted Arr
/* 题目:2.1.1 Remove Duplicates from Sorted Array Given a sorted array, remove the duplicates in place ...