the-way-to-go - 2. Redis 数据类型 String

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容Redis),内存型 2GB
简介: the-way-to-go - 2. Redis 数据类型 String

Redis 数据类型 String

  1. String 是 Redis 最基本的类型,一个key对应一个value
  2. String 类型是 二进制安全 的。 意味着 Redis 的 string 可以包含任何数据。 比如jpg图片或者序列化的对象; 也可以 数字 类型进行累加操作 INCR
  3. 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]
  1. 过期时间设置

    • EX seconds : 设置 key 的时候同时设置 n 秒过期。与 SETEX 命令行为一致。 SET key100 value100 EX 20
    • PX milliseconds: 设置 n 毫秒过期, 与 EX 互斥。 SET key1 value1 PX 100
    • KEEPTTL: 保留剩余的过期时间。 不使用此参数则剩余过期时间将被覆盖。
  2. Key 存在条件

    • NX : 当 Key 不存在时生效. 与 SETNX 行为一致。
    • XX : 当 Key 存在时生效。
  3. GET: 存数据的同时取出原来的值。 如果 key 不存在返回 nil; 如果 TYPE key 不是 string 的报错。

扩展 SET 命令

  1. SETEX key value seconds: 保存 key 并设置过期时间
  2. SETNX key value: 当 key 不存在的时候生效。
  3. 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

  1. GET: 获取单个 key 的值
  2. 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

  1. 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

  1. STRLEN key: 统计 key 的值的长度。
127.0.0.1:6379> get k9
"value1234"
127.0.0.1:6379> STRLEN k9
(integer) 9

片段设置 SETRANAGE and GETRANAGE

  1. SETRANGE key offset value: 从指定的 offset 位置操作片段, 替换原有片段。 如果 offset 位置比原 key 长度大, 将用 zero 占位。
  2. 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 类型对纯数字类型的值可以进行 加减操作

  1. INCR key: 累加 1
  2. INCRBY key increment: 指定累加值。 ex: INCRBY key 10
  3. DECR key: 累减 1
  4. DECRBY key increment: 指定减少值。 ex: DECRBY key 10
相关文章
|
24天前
|
消息中间件 缓存 NoSQL
Redis各类数据结构详细介绍及其在Go语言Gin框架下实践应用
这只是利用Go语言和Gin框架与Redis交互最基础部分展示;根据具体业务需求可能需要更复杂查询、事务处理或订阅发布功能实现更多高级特性应用场景。
154 86
|
3月前
|
存储 NoSQL 定位技术
Redis数据类型面试给分情况
Redis常见数据类型包括:string、hash、list、set、zset(有序集合)。此外还包含高级结构如bitmap、hyperloglog、geo。不同场景可选用合适类型,如库存用string,对象存hash,列表用list,去重场景用set,排行用zset,签到用bitmap,统计访问量用hyperloglog,地理位置用geo。
90 5
|
3月前
|
NoSQL Java Redis
Redis基本数据类型及Spring Data Redis应用
Redis 是开源高性能键值对数据库,支持 String、Hash、List、Set、Sorted Set 等数据结构,适用于缓存、消息队列、排行榜等场景。具备高性能、原子操作及丰富功能,是分布式系统核心组件。
391 2
|
10月前
|
存储 缓存 NoSQL
解决Redis缓存数据类型丢失问题
解决Redis缓存数据类型丢失问题
383 85
|
7月前
|
Java
课时14:Java数据类型划分(初见String类)
课时14介绍Java数据类型,重点初见String类。通过三个范例讲解:观察String型变量、"+"操作符的使用问题及转义字符的应用。String不是基本数据类型而是引用类型,但使用方式类似基本类型。课程涵盖字符串连接、数学运算与字符串混合使用时的注意事项以及常用转义字符的用法。
158 9
|
7月前
|
NoSQL Redis
Redis的常用数据类型有哪些 ?
Redis 有 5 种基础数据结构,它们分别是:string(字符串)、list(列表)、hash(字典)、set(集 合) 和 zset(有序集合)
|
10月前
|
存储 NoSQL Redis
redis常见数据类型
Redis 是一种基于内存的键值存储数据库,支持字符串、哈希表、列表、集合及有序集合等多种数据类型,每种类型均有特定用途与适用场景,提供丰富的命令操作,适用于高速数据访问与处理。
161 5
|
11月前
|
Java
在Java中如何将基本数据类型转换为String
在Java中,可使用多种方法将基本数据类型(如int、char等)转换为String:1. 使用String.valueOf()方法;2. 利用+运算符与空字符串连接;3. 对于数字类型,也可使用Integer.toString()等特定类型的方法。这些方法简单高效,适用于不同场景。
492 7
|
NoSQL 数据库连接 Go
Go与Redis连接池的那些事儿~
Go与Redis连接池的那些事儿~
1854 0
|
5月前
|
缓存 NoSQL 关系型数据库
美团面试:MySQL有1000w数据,redis只存20w的数据,如何做 缓存 设计?
美团面试:MySQL有1000w数据,redis只存20w的数据,如何做 缓存 设计?
美团面试:MySQL有1000w数据,redis只存20w的数据,如何做 缓存 设计?

热门文章

最新文章