网站首页 > 文章精选 正文
字符串的特性
- string 是 redis 最基本的类型,我们可以理解为与 Memcache 一模一样的类型,一个 key 对应一个 value。
- string 类型是二进制安全的,存入和获取的数据相同。意思是 redis 的 string 可以包含任何数据,比如 jpg 图片或者序列化对象。
- string 类型的值最大能存储 512MB。
字符串相关的命令
操作 | 命令 | 例子 | 说明 |
存 | set | set key value | 设置值 |
取 | get | get key | 获取值 |
删 | del | del key | 删除值 |
先取值后赋值 | getset | getset key value | 先获取之前的值,然后设置一个新的值 |
数值递增 | incr | incr key | 如果值不存在时,会将值设置为0,从0开始增加1; 如果是对不能进行累加操作的,会抛出异常 |
数值递减 | decr | decr key | 如果值不存在时,会将值设置为0,从0开始减少1; 如果是对不能进行递减操作的,会抛出异常 |
数值增加指定值 | incrby | incrby key 增加的数值 | 如果值不存在时,会将值设置为0,从0开始增加“指定值”; 如果是对不能进行累加操作的,会抛出异常 |
数值减少指定值 | decrby | decrby key 要减的数值 | 如果值不存在时,会将值设置为0,从0开始减少“指定值”; 如果是对不能进行递减操作的,会抛出异常 |
拼接 | append | append key 字符串 | 在之前的字符串后面拼接,拼接完了之后,返回字符的长度 |
常用操作
127.0.0.1:6379> set key1 value1 # 设置值
OK
127.0.0.1:6379> set company baidu # 设置值
OK
127.0.0.1:6379> keys * # 查看所有的 key
1) "key1"
2) "company"
127.0.0.1:6379> EXISTS key1 # 判断 key1 是否存在,存在就返回 1, 不存在就返回 0
(integer) 1
127.0.0.1:6379> exists company
(integer) 1
127.0.0.1:6379> get company # 获取值
"baidu"
127.0.0.1:6379> append company &alibaba # 追加字符串,如果当前的 key 不存在,就相当于 set key
(integer) 13
127.0.0.1:6379> get company
"baidu&alibaba"
127.0.0.1:6379> strlen company # 获取字符串的长度
(integer) 13
127.0.0.1:6379>
##################################################
127.0.0.1:6379> set book redis # 设置值
OK
127.0.0.1:6379> getset book mongodb # 先获取值然后设置值
"redis"
127.0.0.1:6379> get book
"mongodb"
127.0.0.1:6379>
步长操作(incr、incrby、decr、decryby)
127.0.0.1:6379> set online 0 # 添加在线人数
OK
127.0.0.1:6379> incr online # 自增 1
(integer) 1
127.0.0.1:6379> get online # 获取在线人数
"1"
127.0.0.1:6379> incr online # 再次自增
(integer) 2
127.0.0.1:6379> get online
"2"
127.0.0.1:6379> decr online # 自减 1
(integer) 1
127.0.0.1:6379> decr online
(integer) 0
127.0.0.1:6379> decr online # 可以减到负数
(integer) -1
127.0.0.1:6379> incrby online 10 # 指定增加 10,也就说步长设置为 10
(integer) 9
127.0.0.1:6379> incrby online 10
(integer) 19
127.0.0.1:6379> decrby online 4 # 指定减少 4
(integer) 15
127.0.0.1:6379>
字符串范围(getrange)
127.0.0.1:6379> get company # 获取值
"baidu&alibaba"
127.0.0.1:6379> getrange company 0 5 # 获取字符串范围 [0, 5] 获取前面 5个
"baidu&"
127.0.0.1:6379> getrange company 0 -1 # 获取全部的字符串,这里和 get key 的结果是一样的
"baidu&alibaba"
127.0.0.1:6379>
字符串替换(setrange)
127.0.0.1:6379> flushdb
OK
127.0.0.1:6379> set company baidu,alibaba,taobao,jd # 设置一个新的值
OK
127.0.0.1:6379> get company
"baidu,alibaba,taobao,jd"
# 替换指定位置的字符串,字符下标从 0 开始, 设置完之后返回的是整个字符串的长度
127.0.0.1:6379> setrange company 5 &
(integer) 23
127.0.0.1:6379> get company
"baidu&alibaba,taobao,jd"
127.0.0.1:6379>
同时设置多个值(mset、mget、msetnx)
127.0.0.1:6379> mset name Trump age 40 sex 1 # 设置多个值
OK
127.0.0.1:6379> keys *
1) "sex"
2) "age"
3) "name"
127.0.0.1:6379> get name
"Trump"
127.0.0.1:6379> mget name age sex # 获取多个 key 的值
1) "Trump"
2) "40"
3) "1"
设置过期时间(setex)、不存在时设置(setnx、msetnx)
实现分布式锁常用的就是这两个命令
- setex: set with expire 设置过期时间
- setnx: set if not exists 不存在时,设置值
- msetnx:同时设置多个值
# 设置一个 key 为 locked,过期时间为 30秒,值为 locking
127.0.0.1:6379> setex locked 30 locking
OK
127.0.0.1:6379> ttl locked # 查看剩余过期时间
(integer) 22
127.0.0.1:6379> get locked
"locking"
127.0.0.1:6379> setnx keysTest testValue # 设置一个不存在的值
(integer) 1
127.0.0.1:6379> ttl locked
(integer) -2
127.0.0.1:6379> setnx keysTest testing # 设置一个存在的值,返回为 0,表示设置失败
(integer) 0
# 用于所有给定 key 都不存在时,同时设置一个或多个 key-value 对,
# 当所有的 key 都设置成功时,返回 1,只要有一个失败就返回 0
127.0.0.1:6379>msetnx name Tom db Redis
(integer) 0
127.0.0.1:6379>
关于 ttl 命令
ttl 命令以秒为单位返回 key 的剩余过期时间。
ttl 命令返回值解析(除以下情况,都是以秒为单位,返回 key 的剩余生存时间)
- 返回值为 -2:key 不存在
- 返回值为 -1:key 存在但是没有设置剩余生存时间
- 上一篇: 数据系统 - 数据的编码格式
- 下一篇: 办公必备的10个Excel技巧,高效便捷,每天都要使用
猜你喜欢
- 2024-12-31 面试须知:通常都要知道的TCP、HTTP知识点
- 2024-12-31 excel函数——常用的字符串函数(二)
- 2024-12-31 小小的字符串,在PLC编程中不容小觑,到底有何特别 ?
- 2024-12-31 玩转Python—字符串使用教程
- 2024-12-31 vlookup的高阶用法——数据提取,不是很简单,但是很实用
- 2024-12-31 替换函数Substitute,用法大全,值得收藏备用
- 2024-12-31 C++基础算法:统计字符数
- 2024-12-31 Java基础面试:一文看懂String类中的常用方法
- 2024-12-31 老司机归纳-经典SQL语句(二)
- 2024-12-31 32767、8192、255在Excel中这三个数有什么含义?
- 最近发表
- 标签列表
-
- newcoder (56)
- 字符串的长度是指 (45)
- drawcontours()参数说明 (60)
- unsignedshortint (59)
- postman并发请求 (47)
- python列表删除 (50)
- 左程云什么水平 (56)
- 计算机网络的拓扑结构是指() (45)
- 稳压管的稳压区是工作在什么区 (45)
- 编程题 (64)
- postgresql默认端口 (66)
- 数据库的概念模型独立于 (48)
- 产生系统死锁的原因可能是由于 (51)
- 数据库中只存放视图的 (62)
- 在vi中退出不保存的命令是 (53)
- 哪个命令可以将普通用户转换成超级用户 (49)
- noscript标签的作用 (48)
- 联合利华网申 (49)
- swagger和postman (46)
- 结构化程序设计主要强调 (53)
- 172.1 (57)
- apipostwebsocket (47)
- 唯品会后台 (61)
- 简历助手 (56)
- offshow (61)