User-Profile-Image
hankin
  • 5
  • Java
  • Kotlin
  • Spring
  • Web
  • SQL
  • MegaData
  • More
  • Experience
  • Enamiĝu al vi
  • 分类
    • Zuul
    • Zookeeper
    • XML
    • WebSocket
    • Web Notes
    • Web
    • Vue
    • Thymeleaf
    • SQL Server
    • SQL Notes
    • SQL
    • SpringSecurity
    • SpringMVC
    • SpringJPA
    • SpringCloud
    • SpringBoot
    • Spring Notes
    • Spring
    • Servlet
    • Ribbon
    • Redis
    • RabbitMQ
    • Python
    • PostgreSQL
    • OAuth2
    • NOSQL
    • Netty
    • MySQL
    • MyBatis
    • More
    • MinIO
    • MegaData
    • Maven
    • LoadBalancer
    • Kotlin Notes
    • Kotlin
    • Kafka
    • jQuery
    • JavaScript
    • Java Notes
    • Java
    • Hystrix
    • Git
    • Gateway
    • Freemarker
    • Feign
    • Eureka
    • ElasticSearch
    • Docker
    • Consul
    • Ajax
    • ActiveMQ
  • 页面
    • 归档
    • 摘要
    • 杂图
    • 问题随笔
  • 友链
    • Spring Cloud Alibaba
    • Spring Cloud Alibaba - 指南
    • Spring Cloud
    • Nacos
    • Docker
    • ElasticSearch
    • Kotlin中文版
    • Kotlin易百
    • KotlinWeb3
    • KotlinNhooo
    • 前端开源搜索
    • Ktorm ORM
    • Ktorm-KSP
    • Ebean ORM
    • Maven
    • 江南一点雨
    • 江南国际站
    • 设计模式
    • 熊猫大佬
    • java学习
    • kotlin函数查询
    • Istio 服务网格
    • istio
    • Ktor 异步 Web 框架
    • PostGis
    • kuangstudy
    • 源码地图
    • it教程吧
    • Arthas-JVM调优
    • Electron
    • bugstack虫洞栈
    • github大佬宝典
    • Sa-Token
    • 前端技术胖
    • bennyhuo-Kt大佬
    • Rickiyang博客
    • 李大辉大佬博客
    • KOIN
    • SQLDelight
    • Exposed-Kt-ORM
    • Javalin—Web 框架
    • http4k—HTTP包
    • 爱威尔大佬
    • 小土豆
    • 小胖哥安全框架
    • 负雪明烛刷题
    • Kotlin-FP-Arrow
    • Lua参考手册
    • 美团文章
    • Java 全栈知识体系
    • 尼恩架构师学习
    • 现代 JavaScript 教程
    • GO相关文档
    • Go学习导航
    • GoCN社区
    • GO极客兔兔-案例
    • 讯飞星火GPT
    • Hollis博客
    • PostgreSQL德哥
    • 优质博客推荐
    • 半兽人大佬
    • 系列教程
    • PostgreSQL文章
    • 云原生资料库
    • 并发博客大佬
Help?

Please contact us on our email for need any support

Support
    首页   ›   SQL   ›   NOSQL   ›   Redis   ›   正文
Redis

Redis笔记—String

2020-03-30 00:14:38
794  0 0
参考目录 隐藏
1) APPEND
2) DECR
3) DECRBY
4) GET
5) GETRANGE
6) GETSET
7) INCR
8) INCRBY
9) INCRBYFLOAT
10) MGET与MSET
11) SETEX
12) PSETEX
13) SETNX
14) MSETNX
15) SETRANGE
16) STRLEN

阅读完需:约 3 分钟

简单的介绍几种常用的方法:

APPEND

使用 APPEND 命令时,如果 key 已经存在,则会直接在 value 后追加值,如果 key 不存在,则会先创建一个 value 为空字符串的 key ,然后再追加:

1
2
3
4
5
6
7
8
127.0.0.1:6379> APPEND k1 hello
(integer) 5
127.0.0.1:6379> GET k1
“hello”
127.0.0.1:6379> APPEND k1 world
(integer) 10
127.0.0.1:6379> GET k1
“helloworld”

DECR

DECR 命令可以实现对 value 的减 1 操作,如果 key 不存在,则 key 对应的初始值会被置为 0 ,如果 key 的 value 不为数字,则会报错,如下:

1
2
3
4
5
6
7
8
9
10
127.0.0.1:6379> SET k3 19
OK
127.0.0.1:6379> DECR k3
(integer) 18
127.0.0.1:6379> GET k3
“18”
127.0.0.1:6379> SET k4 aa
OK
127.0.0.1:6379> DECR k4
(error) ERR value is not an integer or out of range

DECRBY

DECRBY 和 DECR 类似,不同的是 DECRBY 可以指定步长,如下:

1
2
3
4
5
6
127.0.0.1:6379> GET k3
“8”
127.0.0.1:6379> DECRBY k3 4
(integer) 4
127.0.0.1:6379> GET k3
“4”

GET

GET 命令用来获取对应 key 的 value,如果 key 不存在则返回 nil ,如下:

1
2
127.0.0.1:6379> GET k5
(nil)

GETRANGE

GETRANGE 用来返回 key 所对应的 value 的子串,子串由 start 和 end 决定,从左往右计算,如果下标是负数,则从右往左计算,其中 -1 表示最后一个字符, -2 是倒数第二个…,如下:

1
2
3
4
5
6
127.0.0.1:6379> SET k1 helloworld
OK
127.0.0.1:6379> GETRANGE k1 0 2
“hel”
127.0.0.1:6379> GETRANGE k1 -3 -1
“rld”

GETSET

GETSET 命令可以用来获取 key 所对应的 value ,并对 key 进行重置,如下:

1
2
3
4
5
6
7
8
127.0.0.1:6379> SET k1 v1
OK
127.0.0.1:6379> GET k1
“v1”
127.0.0.1:6379> GETSET k1 vv
“v1”
127.0.0.1:6379> GET k1
“vv”

INCR

INCR 操作可以对指定 key 的 value 执行加 1 操作,如果指定的 key 不存在,那么在加 1 操作之前,会先将 key 的 value 设置为 0 ,如果 key 的 value 不是数字,则会报错。如下:

1
2
127.0.0.1:6379> INCR k2
(integer) 1

INCRBY

INCRBY 和 INCR 功能类似,不同的是可以指定增长的步长,如下:

1
2
127.0.0.1:6379> INCRBY k2 99
(integer) 100

INCRBYFLOAT

INCRBYFLOAT 命令可以用来增长浮点数,如下:

1
2
3
4
127.0.0.1:6379> SET k1 0.5
OK
127.0.0.1:6379> INCRBYFLOAT k1 0.33
“0.83”

MGET与MSET

MGET 与 MSET 分别用来批量设置值和批量获取值,如下:

1
2
3
4
5
6
127.0.0.1:6379> MSET k1 v1 k2 v2 k3 v3
OK
127.0.0.1:6379> MGET k1 k2 k3
1) “v1”
2) “v2”
3) “v3”

SETEX

SETEX 用来给 key 设置 value ,同时设置过期时间,等效于先给 key 设置 value ,再给 key 设置过期时间,如下:

1
2
3
4
5
6
127.0.0.1:6379> SETEX k1 30 v1
OK
127.0.0.1:6379> TTL k1
(integer) 26
127.0.0.1:6379> GET k1
“v1”

PSETEX

PSETEX 的作用和 SETEX 类似,不同的是,这里设置过期时间的单位是毫秒,如下:

1
2
3
4
127.0.0.1:6379> PSETEX k1 60000 v1
OK
127.0.0.1:6379> PTTL k1
(integer) 55412

SETNX

SETNX 是 SET if Not eXists 的简写,SET 命令在执行时,如果 key 已经存在,则新值会覆盖掉旧值,而对于 SETNX 命令,如果 key 已经存在,则不做任何操作,如果 key 不存在,则效果等同于 SET 命令。如下:

1
2
3
4
5
6
127.0.0.1:6379> SETNX k1 v1
(integer) 1
127.0.0.1:6379> SETNX k1 vv
(integer) 0
127.0.0.1:6379> GET k1
“v1”

MSETNX

MSETNX 兼具了 SETNX 和 MSET 的特性,但是 MSETNX 在执行时,如果有一个 key 存在,则所有的都不会执行,如下:

1
2
127.0.0.1:6379> MSETNX k1 v1 k2 v2
(integer) 0

因为 k1 已经存在,所以 k2 也没执行成功。

SETRANGE

SETRANGE 用来覆盖一个已经存在的 key 的 value ,如下:

1
2
3
4
5
6
7
8
127.0.0.1:6379> set k1 helloworld
OK
127.0.0.1:6379> get k1
“helloworld”
127.0.0.1:6379> SETRANGE k1 5 redis
(integer) 10
127.0.0.1:6379> get k1
“helloredis”

但是如果已经存在的 key 的 value 长度小于 offset ,则不足的地方用 0 补齐,如下:

1
2
3
4
5
6
127.0.0.1:6379> set k1 helloredis
OK
127.0.0.1:6379> SETRANGE k1 20 –java
(integer) 26
127.0.0.1:6379> GET k1
“helloredis\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00–java”

STRLEN

STRLEN 用来计算 key 的 value 的长度,如下:

1
2
127.0.0.1:6379> STRLEN k1
(integer) 26

如本文“对您有用”,欢迎随意打赏作者,让我们坚持创作!

0 打赏
Enamiĝu al vi
不要为明天忧虑.因为明天自有明天的忧虑.一天的难处一天当就够了。
543文章 68评论 294点赞 594462浏览

随机文章
Kotlin-协程(专)—Channel 篇(三十九)
4年前
SpringBoot—整合Druid(阿里巴巴数据库连接池)
5年前
SpringMVC笔记14—JSON
5年前
Java—并发编程(六)JUC锁 – (3)公平锁
4年前
Redis笔记—连接 Java 客户端(Jedis)
5年前
博客统计
  • 日志总数:543 篇
  • 评论数目:68 条
  • 建站日期:2020-03-06
  • 运行天数:1927 天
  • 标签总数:23 个
  • 最后更新:2024-12-20
Copyright © 2025 网站备案号: 浙ICP备20017730号 身体没有灵魂是死的,信心没有行为也是死的。
主页
页面
  • 归档
  • 摘要
  • 杂图
  • 问题随笔
博主
Enamiĝu al vi
Enamiĝu al vi 管理员
To be, or not to be
543 文章 68 评论 594462 浏览
测试
测试
看板娘
赞赏作者

请通过微信、支付宝 APP 扫一扫

感谢您对作者的支持!

 支付宝 微信支付