参考源

https://www.bilibili.com/video/BV1S54y1R7SB?spm_id_from=333.999.0.0

版本

本文章基于 Redis 6.2.6


应用场景:计数器、统计多单位的数量、粉丝数、对象缓存存储。

赋值

普通赋值

set

  1. 127.0.0.1:6379> set hello Hello World
  2. OK

不存在才赋值

setnx

  1. 127.0.0.1:6379> setnx hello Hello
  2. (integer) 0
  3. 127.0.0.1:6379> get hello
  4. "Hello World"

由于 hello 已经有值赋值没有成功。

  1. 127.0.0.1:6379> setnx hello1 Hello
  2. (integer) 1
  3. 127.0.0.1:6379> get hello1
  4. "Hello"

不存在的 key 才能赋值。

批量赋值

mset

  1. 127.0.0.1:6379> mset hello1 Hello1 hello2 Hello2
  2. OK
  3. 127.0.0.1:6379> get hello1
  4. "Hello1"
  5. 127.0.0.1:6379> get hello2
  6. "Hello2"

原子性批量赋值

msetnx

  1. 127.0.0.1:6379> msetnx hello2 "Hello World2" hello3 "Hello World3"
  2. (integer) 0
  3. 127.0.0.1:6379> get hello2
  4. "Hello2"
  5. 127.0.0.1:6379> get hello3
  6. (nil)

要么同时成功,要么同时失败。

设置对象

set 对象

  1. 127.0.0.1:6379> set user:1 {name:sail,age:27}
  2. OK
  3. 127.0.0.1:6379> set user:2 {name:hello,age:28}
  4. OK
  5. 127.0.0.1:6379> get user:1
  6. "{name:sail,age:27}"
  7. 127.0.0.1:6379> get user:2
  8. "{name:hello,age:28}"

设置一个 user:1user:2 对象,值为 Json 字符串来保存一个对象。

追加

append

  1. 127.0.0.1:6379> append hello "Hello World"
  2. (integer) 11
  3. 127.0.0.1:6379> get hello
  4. "Hello World"

如果当前 key 不存在,就相当于 set key

取值

普通取值

get

  1. 127.0.0.1:6379> get hello
  2. "Hello World"

先取值再赋值

getset

  1. 127.0.0.1:6379> getset hello4 "Hello4"
  2. (nil)

由于 hello4 前面没有赋值,这里先取值为空。

获取长度

strlen

  1. 127.0.0.1:6379> strlen hello
  2. (integer) 11

key

查看全部 key

keys *

  1. 127.0.0.1:6379> keys *
  2. 1) "hello"

删除 key

del

  1. 127.0.0.1:6379> keys *
  2. 1) "hello"
  3. 127.0.0.1:6379> del hello
  4. (integer) 1
  5. 127.0.0.1:6379> keys *
  6. (empty array)

key 是否存在

exists

  1. 127.0.0.1:6379> exists hello
  2. (integer) 1
  3. 127.0.0.1:6379> exists hello1
  4. (integer) 0

存在返回 1,不存在返回 0

增减

自增 1

incr

  1. 127.0.0.1:6379> set num1 0
  2. OK
  3. 127.0.0.1:6379> incr num1
  4. (integer) 1
  5. 127.0.0.1:6379> incr num1
  6. (integer) 2

执行一次会让对应 key 的值加 1

自减 1

decr

  1. 127.0.0.1:6379> decr num1
  2. (integer) 1
  3. 127.0.0.1:6379> decr num1
  4. (integer) 0

执行一次会让对应 key 的值减 1

自增步长

incrby

  1. 127.0.0.1:6379> incrby num1 10
  2. (integer) 10
  3. 127.0.0.1:6379> incrby num1 10
  4. (integer) 20

执行一次会按照设置的步长增加一次

自减步长

decrby

  1. 127.0.0.1:6379> decrby num1 10
  2. (integer) 10
  3. 127.0.0.1:6379> decrby num1 10
  4. (integer) 0

执行一次会按照设置的步长减少一次

截取

截取指定下标

getrange

  1. 127.0.0.1:6379> getrange hello 0 4
  2. "Hello"

这里截取的规则是含头含尾

截取全部

getrange 0 -1

  1. 127.0.0.1:6379> getrange hello 0 -1
  2. "Hello World"

这样与 get key 的效果一致,建议还是用 get key,更加简洁。

从指定位置替换

setrange

  1. 127.0.0.1:6379> setrange hello 6 sail
  2. (integer) 11
  3. 127.0.0.1:6379> get hello
  4. "Hello saild"

过期

设置过期

setex

  1. 127.0.0.1:6379> setex hello 60 "Hello World"
  2. OK

最后一个参数是设置替换成的字符串

查看过期剩余时间

ttl

  1. 127.0.0.1:6379> ttl hello
  2. (integer) 56
  3. 127.0.0.1:6379> ttl hello
  4. (integer) 55
  5. 127.0.0.1:6379> ttl hello
  6. (integer) -2
  7. 127.0.0.1:6379> get hello
  8. (nil)

当结果为 -2 时代表已到期,其值为空。

Redis 03 字符串的更多相关文章

  1. Redis操作字符串工具类封装,Redis工具类封装

    Redis操作字符串工具类封装,Redis工具类封装 >>>>>>>>>>>>>>>>>>& ...

  2. redis数据类型-字符串类型

    Redis数据类型 字符串类型 字符串类型是Redis中最基本的数据类型,它能存储任何形式的字符串,包括二进制数据.你可以用其存储用户的邮箱.JSON化的对象甚至是一张图片.一个字符串类型键允许存储的 ...

  3. 【Redis面试题】Redis的字符串是怎么实现的?

    年前本人在找工作面试时在Redis相关问题上可栽了跟头.在面试前按常规套路准备了一下,比如 Redis 的常用5种数据结构,Redis持久化策略,Redis实现分布式锁,简单发布订阅等等都准备了,当时 ...

  4. Redis 操作字符串数据

    Redis 操作字符串数据: > set name "Tom" // set 用于添加 key/value 数据,如果 key 存在则覆盖 OK > setnx nam ...

  5. 第二百九十五节,python操作redis缓存-字符串类型

    python操作redis缓存-字符串类型 首先要安装redis-py模块 python连接redis方式,有两种连接方式,一种是直接连接,一张是通过连接池连接 注意:以后我们都用的连接池方式连接,直 ...

  6. Redis 数据结构-字符串源码分析

    相关文章 Redis 初探-安装与使用 Redis常用指令 本文将从以下几个部分进行介绍 1.前言 2.常用命令 3.字符串结构 4.字符串实现 5.命令是如果操作字符串的 前言 平时在使用 Redi ...

  7. redis之字符串命令源代码解析(二)

    形象化设计模式实战             HELLO!架构                     redis命令源代码解析 在redis之字符串命令源代码解析(一)中讲了get的简单实现,并没有对 ...

  8. 深入了解Redis(1)-字符串底层实现

    一.简单动态字符串(SDS) Redis中字符串实现有两种方式,C语言传统字符串(以空字符结尾的字符数组)和简单动态字符串(SDS),并将SDS作为默认字符串表示. C字符串只会作为字符串字面量,用在 ...

  9. redis数据类型(字符串)

    字符串 这是最简单Redis类型.如果你只用这种类型,Redis就像一个可以持久化的memcached服务器 127.0.0.1:6379> set mykey somevalue OK 127 ...

随机推荐

  1. MySQL的Explain总结

    Explain简介 MySQL优化器在基于成本的计算和基于规则的SQL优化会生成一个所谓的执行计划,我们就可以使用执行计划查看MySQL对该语句具体的执行方式. 介绍这个好啰嗦就是了,我们可以通过这个 ...

  2. 国内GPU 厂商产品分布

    抽空理了理国内目前已知显卡厂商的各类产品(来源与各个公司产品网站),可能不全,后续会实时更新. 目前来看,显卡市场还是国外两巨头+intel 占据了绝大数的市场,intel 在igpu上深耕了很多年, ...

  3. [算法学习] dsu on tree

    简介 dsu on tree跟dsu没有关系,但是dsu on tree借鉴了dsu的启发式合并的思想. 它是用来解决一类树上的询问问题,一般这种问题有以下特征: \(1.\)只有对子树的查询: \( ...

  4. 关于git flow的一点思考

    本文首发自我的公众号:成都有娃儿,这里把三篇文章合一,方便阅读. 现在相当多的公司或者团队都在使用git来做版本控制,结合我这些年的工作经历,我总结了一些个人认为不错的使用规范和习惯. 脱离背景来讲规 ...

  5. 无鼠标打开Windows设备管理

    转载:https://blog.csdn.net/weixin_39946767/article/details/118644619

  6. Spring cloud gateway 如何在路由时进行负载均衡

    本文为博主原创,转载请注明出处: 1.spring cloud gateway 配置路由 在网关模块的配置文件中配置路由: spring: cloud: gateway: routes: - id: ...

  7. 网络协议之:memcached binary protocol详解

    目录 简介 memcached的协议包 memcached命令举例 总结 简介 前面讲到了memcached的文本协议,虽然文本协议看起来非常简单,但是对于客户端来说一般还是会选择效率更高的二进制协议 ...

  8. css设置元素背景透明度的2种方式

    更新记录 本文迁移自Panda666原博客,原发布时间:2021年7月9日. 设置元素的背景的透明度可以使用2种方式:方式1:opacity属性.方式2:使用rgba值.两种方式有一点差异,opaci ...

  9. SAP Web Dynpro-集成消息

    您可以使用消息管理器将消息集成到消息日志中. 您可以使用Web Dynpro代码向导打开消息管理器. 您可以从工具栏中打开Web Dynpro代码向导. 当您的ABAP工作台处于更改模式或编辑视图或控 ...

  10. SAP Using Text Modules in Adobe Forms

    In this demo we will create an adobe form which displays text in two different languages (English or ...