RedisRoad - 02 数据类型 String
2023-02-18 16:39:36 时间
- String 是 Redis 最基本的类型,一个key对应一个value 。
- String 类型是 二进制安全 的。意味着 Redis 的 string 可以包含任何数据。比如jpg图片或者序列化的对象;也可以 数字 类型进行累加操作
INCR
- String 类型是 Redis 最基本的数据类型,一个 Redis 中字符串 value 最多可以是 512M
基本 SET
命令
最简单的设置方式是
SET key value
但完整语法是
SET key value [EX seconds|PX milliseconds|EXAT timestamp|PXAT milliseconds-timestamp|KEEPTTL] [NX|XX] [GET]
- 过期时间设置
EX seconds
: 设置 key 的时候同时设置 n 秒过期。与SETEX
命令行为一致。SET key100 value100 EX 20
。PX milliseconds
: 设置 n 毫秒过期, 与 EX 互斥。SET key1 value1 PX 100
KEEPTTL
: 保留剩余的过期时间。不使用此参数则剩余过期时间将被覆盖。
- Key 存在条件
NX
: 当 Key 不存在时生效. 与SETNX
行为一致。XX
: 当 Key 存在时生效。
GET
: 存数据的同时取出原来的值。如果 key 不存在返回nil
;如果TYPE key
不是 string 的报错。
扩展 SET 命令
SETEX key value seconds
: 保存 key 并设置过期时间SETNX key value
: 当 key 不存在的时候生效。MSET key value [key value ...]
: 同时设置多个 key-value 对
SET ... keepttl
参数 demo
127.0.0.1:6379[1]> SET k100 value EX 50
OK
127.0.0.1:6379[1]> TTL k100
(integer) 47
# 使用 KeepTTL 保留剩余过期时间
127.0.0.1:6379[1]> SET k100 value2 keepttl
OK
127.0.0.1:6379[1]> ttl k100
(integer) 28
127.0.0.1:6379[1]> set k200 value2 ex 50
OK
127.0.0.1:6379[1]> ttl k200
(integer) 41
# 没有使用 KeepTTL, 过期时间被覆盖,
127.0.0.1:6379[1]> set k200 value4
OK
127.0.0.1:6379[1]> ttl k200
(integer) -1
SET ... GET
demo
127.0.0.1:6379[1]> SET key 100
OK
127.0.0.1:6379[1]> SET key 200 GET
"100"
# key 不存在返回 nil
127.0.0.1:6379[1]> SET key99 value GET
(nil)
获取值 GET
and MGET
GET
: 获取单个 key 的值MGET
: 同时获取多个 key 的值
# get
127.0.0.1:6379[1]> GET key
"200"
# mget
127.0.0.1:6379[1]> MGET key key99 key9 key200
1) "200"
2) "value"
3) "GET"
4) (nil)
字符串操作
字符串拼接: APPEND
APPEND key value
在原有字符串后面拼接新的字段。如果原 key 不存在则行为类似set key value
127.0.0.1:6379> APPEND k9 value
(integer) 5
127.0.0.1:6379> get k9
"value"
127.0.0.1:6379> APPEND k9 1234
(integer) 9
127.0.0.1:6379> get k9
"value1234"
长度统计: STRLEN
STRLEN key
: 统计 key 的值的长度。
127.0.0.1:6379> get k9
"value1234"
127.0.0.1:6379> STRLEN k9
(integer) 9
片段设置 SETRANAGE
and GETRANAGE
SETRANGE key offset value
: 从指定的offset
位置操作片段, 替换原有片段。如果 offset 位置比原 key 长度大, 将用zero
占位。GETRANGE key start end
: 获取指定 首尾 的字符串。左右包含
# SetRange
127.0.0.1:6379> SET key1 "Hello World"
OK
127.0.0.1:6379>
127.0.0.1:6379> SETRANGE key1 6 "Redis"
(integer) 11
127.0.0.1:6379> GET key1
"Hello Redis"
# SetRange: 用 zero 占位
127.0.0.1:6379> SETRANGE key2 6 "Redis"
(integer) 11
127.0.0.1:6379>
127.0.0.1:6379> GET key2
"\x00\x00\x00\x00\x00\x00Redis"
# GetRange
127.0.0.1:6379> set n 0123456
OK
127.0.0.1:6379> GETRANGE n 0 3
"0123"
127.0.0.1:6379> GETRANGE n 1 3
"123"
127.0.0.1:6379> GETRANGE n 1 10
"123456"
redis> SET mykey "This is a string"
"OK"
redis> GETRANGE mykey 0 3
"This"
redis> GETRANGE mykey -3 -1
"ing"
redis> GETRANGE mykey 0 -1
"This is a string"
redis> GETRANGE mykey 10 100
"string"
redis>
算数操作
string 类型对纯数字类型的值可以进行 加减操作
INCR key
: 累加 1INCRBY key increment
: 指定累加值。ex: INCRBY key 10
DECR key
: 累减 1DECRBY key increment
: 指定减少值。ex: DECRBY key 10
相关文章
- HTML5项目笔记10:使用HTML5 IndexDB设计离线数据库
- HTML5项目笔记9:HTML5 Canvas 的图表报表开发
- HTML5项目笔记8:使用HTML5 的跨域通信机制进行数据同步
- HTML5项目笔记7:使用HTML5 WebStorage API构建与.NET对应的会话机制
- HTML5项目笔记6:使用HTML5 FileSystem API设计离线文件存储
- HTML5项目笔记5:使用HTML5 WebDataBase设计离线数据库
- HTML5项目笔记4:使用Audio API设计绚丽的HTML5音乐播放器
- HTML5项目笔记2:离线系统表单设计
- HTML5项目笔记1:项目准备和工具使用
- Web前端设计模式--购物车拖拽的实现...
- LinQ构建分层架构
- Web前端设计模式--构建Ajax智能搜索...
- Web前端设计模式--制作漂亮的弹出层...
- Web 前端设计模式--Dom重构...
- Web前端设计模式--jQuery验证插件...
- PBN主区代表95%时间概率的范围,这个理解对么?
- 第九节 RNP APCH保护区的绘制
- 第八节 起始进近基线转弯保护区的绘制
- 第七节 VOR/DME进近程序保护区的绘制
- 第六节 FAF与GP不工作保护区的绘制