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方式,有两种连接方式,一种是直接连接,一张是通过连接池连接 注意:以后我们都用的连接池方式连接,直 ...
随机推荐
- 线段树——I hate it
[问题描述] 很多学校流行一种比较的习惯.老师们很喜欢询问,从某某到某某当中,分数最高的是多少.这让很多学生很反感. 不管你喜不喜欢,现在需要你做的是,就是按照老师的要求,写一个程序,模 ...
- DVWA实验之Brute Force(暴力破解)- Medium
DVWA实验之Brute Force(暴力破解)- Medium 有关DVWA环境搭建的教程请参考: https://www.cnblogs.com/0yst3r-2046/p/10928380. ...
- C#多个泛型约束问题
多个约束之间使用逗号隔开,但不重复T约束. 1. private void AddControl<T>(TabPage tabPage, T userControl) where T: U ...
- 【PAT甲级】1041 Be Unique (20 分)(多重集)
题意: 输入一个正整数N(<=1e5),接下来输入N个正整数.输出第一个独特的数(N个数中没有第二个和他相等的),如果没有这样的数就输出"None". AAAAAccepte ...
- [阿里移动推荐算法]比赛_快速入门_4_19_update_仅供参考,思维不要受局限
[这里只讲快速入门——即破题,正负样本不平衡.特征数量等问题就自己多看论文或者其他资料吧~~如果还有数据挖掘相关基础知识不了解的,建议看看<数据挖掘导论>] [以下是理解错误案例]:错误的 ...
- 第七届蓝桥杯javaB组真题解析-抽签(第五题)
题目 /* 抽签 X星球要派出一个5人组成的观察团前往W星. 其中: A国最多可以派出4人. B国最多可以派出2人. C国最多可以派出2人. .... 那么最终派往W星的观察团会有多少种国别的不同组合 ...
- Inject shellcode into PE file
先声明这是不免杀的,只是演示. 哔哩哔哩视频 新增节 一般能实现特定功能的shellcode的长度都比较长,可以分到几个节上的空白区,但是这样麻烦啊,或者把最后一个节扩大,但是最后一个节一般没有执行的 ...
- 面试问题之——给你图片的url,你能知道它所占的字节空间吗?
从一个需求说起 这标题起得有点标题党,实际情况是我最近在做一个公司内部工具时,遇到了这么一个需求,给定一个静态资源站点上某张图片的url(比如https://a.xxxcdn.com/demo.jpg ...
- 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 ...
- KNN-学习笔记
仅供学习使用 练习1 # coding:utf-8 # 2019/10/16 16:49 # huihui # ref: import numpy as np from sklearn import ...