当前位置: 首页 > article >正文

《程序猿之Redis缓存实战 · 字符串类型》

📢 大家好,我是 【战神刘玉栋】,有10多年的研发经验,致力于前后端技术栈的知识沉淀和传播。 💗

🌻 CSDN入驻不久,希望大家多多支持,后续会继续提升文章质量,绝不滥竽充数,欢迎多多交流。👍

文章目录

    • 字符串(String)

字符串(String)

String 是 Redis 中最简单同时也是最常用的一个数据结构。它是一种二进制安全的数据结构,可以用来存储任何类型的数据比如字符串、整数、浮点数、图片、序列化后的对象。

  • String是Redis最基本的类型,你可以理解成与Memcached一模一样的类型,一个key对应一个value。
  • String类型是二进制安全的。意味着Redis的string可以包含任何数据。比如jpg图片或者序列化的对象。
  • String类型是Redis最基本的数据类型,一个Redis中字符串value最多可以是512M。

【应用场景】

1、需要存储常规数据的场景

● 举例 :缓存 session、token、图片地址、序列化后的对象(相比较于 Hash 存储更节省内存)。

● 相关命令 : SET、GET。

2、需要计数的场景

● 举例 :用户单位时间的请求数(简单限流可以用到)、页面单位时间的访问数。

● 相关命令 :SET、GET、INCR、DECR 。

3、分布式锁

● 利用 SETNX key value 命令可以实现一个最简易的分布式锁

Tips:存在一些缺陷,通常不建议这样实现分布式锁。

【Value 存储对象】

如果value是一个Java对象,例如一个User对象,则可以将对象序列化为JSON字符串后存储。

常用指令

SET key value:设置指定的key值
GET key:获取指定key的值
EXISTS key:判断指定 key 是否存在
DEL key:删除指定的 key

MSET key value [ key value … ]:同时设置一个或者多个键值对
MGET key1 [ key2 ]:获取所有(一个或多个)给定key的值

INCR key:将 key 中储存的数字值增一
DECR key:将 key 中储存的数字值减一

EXPIRE key seconds:给指定 key 设置过期时间
SETNX key seconds value:设置值并设置过期时间
TTL key:查看剩余过期时间

【数据结构】

String的数据结构为简单动态字符串(Simple Dynamic String,缩写SDS)。是可以修改的字符串,内部结构实现上类似于Java的ArrayList,采用预分配冗余空间的方式来减少内存的频繁分配。

如图中所示,内部为当前字符串实际分配的空间capacity一般要高于实际字符串长度len。当字符串长度小于1M时,扩容都是加倍现有的空间,如果超过1M,扩容时一次只会多扩1M的空间。需要注意的是字符串最大长度为512M。


http://www.kler.cn/news/326770.html

相关文章:

  • 浅谈网络通信中的透传和非透传
  • 01---java面试八股文——springboot---10题
  • rsync+inotify
  • 【KVM】虚拟化技术及实战
  • defineExpose 显式导出子组件方法
  • 基于SSM的宠物领养管理系统的设计与实现 (含源码+sql+视频导入教程+文档+PPT)
  • MAC M1 安装brew 配置环境变量,安装dart
  • 电影系统1-MovieStrip.vue
  • 一款基于 RBAC 的 Net8 后台管理框架,权限管理,前后台分离,支持多站点单点登录(附源码)
  • 基于Apache和Tomcat的负载均衡实验报告
  • 【30天玩转python】Web开发(Flask/Django)
  • 基于springboot框架的智能招聘系统的设计与实现3hlst
  • ruoyi网页刷新后报404
  • Python电能质量扰动信号分类(六)基于扰动信号特征提取的超强机器学习识别模型
  • VIM的使用总结
  • (c++)内存四区:1.代码区2.全局区(静态区)3.栈区4.堆区
  • 日常工作技术点总结
  • 关于uniapp wifi调用走过的坑
  • 应用层协议 --- HTTP
  • 将Docker镜像推送到阿里云仓库,使用Docker-compose将mysql、redis、jar包整合在一起
  • spring如何解决循环依赖
  • NAND Flash虚拟层垃圾回收机制
  • 【微信小程序前端开发】入门Day01 —— 小程序页面组成、组件使用及协同开发发布指南
  • 深度探索与实战编码:利用Python与AWS签名机制高效接入亚马逊Product Advertising API获取商品详情
  • Web端云剪辑解决方案,提供前端产品源码
  • 使用 MongoDB 在 Spring Boot 中构建安全的 RBAC 系统
  • 【GESP】C++一级练习BCQM3016,初识输入
  • 实用工具推荐---- PDF 转换
  • 利用 Local Data 导入文件到 OceanBase 的方法
  • elasticsearch实战应用JAVA案例