Redis学习笔记3--Redis键值设计

【Redis核心技术:基础篇】键值数据库核心架构、组件原理与高性能设计 Redis键值数据库核心架构解析 本文从键值数据库通用架构出发,以SimpleKV为基准模型,系统剖析了Redis的核心组件与设计原理。键值数据库的四大核心模块(访问框架、索引模块、操作模块、存储模块)构成其功能基础,Redis在此基础上进行了显著优化:采用网络框架支持分布式访问,扩展多种数据结构类型(如Hash、Sorted Set),并设计RDB+AOF持久化机制平衡性能与可靠性。相比SimpleKV的基础实现,Redis通过内存优化、丰富命令集和灵活存储策略,成为支撑高并发场景的首选方案。 阅读详情


原文:http://blog.youkuaiyun.com/freebird_lb/article/details/7733988



tag在互联网应用里尤其多见,首先看下面的关系型数据表:

Book表: 

id

name

author

1

The Ruby Programming Language

Mark Pilgrim

2

Ruby on rail

David Flanagan

3

Programming Erlang

Joe Armstrong

Tag表:

tag_name

book_id

ruby

1

ruby

2

web

2

erlang

3

 

现在用Redis将这两张表的数据存起来: 

保存Book的数据:

redis 127.0.0.1:6379> incr book_id #用book_id这个key保存book表的id,每次要获得一个新的

                                          #book_id用incr命令自增取得

(integer) 1

#incr命令返回1,则用key为book:1的hash来保存一个book对象,对象属性为hash的field

redis 127.0.0.1:6379> hset book:1 name "The Ruby Programming Language"

(integer) 1

redis 127.0.0.1:6379> hset book:1 author "Mark Pilgrim"

(integer) 1

redis 127.0.0.1:6379> hgetall book:1 #用hgetall命令测试一个,返回hash的所有属性和值

1) "name"

2) "The Ruby Programming Language"

3) "author"

4) "Mark Pilgrim"

redis 127.0.0.1:6379> incr book_id #创建第2个book对象,先incr一个book_id获得新book的id

(integer) 2

redis 127.0.0.1:6379> hset book:2 name "Ruby on rail"

(integer) 1

redis 127.0.0.1:6379> hset book:2 author "David Flanagan"

(integer) 1

redis 127.0.0.1:6379> hgetall book:2

1) "name"

2) "Ruby on rail"

3) "author"

4) "David Flanagan"

redis 127.0.0.1:6379> incr book_id

(integer) 3

redis 127.0.0.1:6379> hset book:3 name "Programming Erlang"

(integer) 1

redis 127.0.0.1:6379> hset book:3 author "Joe Armstrong"

(integer) 1

redis 127.0.0.1:6379> hgetall book:3

1) "name"

2) "Programming Erlang"

3) "author"

4) "Joe Armstrong"

 

保存Tag的数据,使用集合来存储数据,因为集合可以求交集、并集、差集:

redis 127.0.0.1:6379> sadd tag:ruby 1

(integer) 1

redis 127.0.0.1:6379> sadd tag:ruby 2

(integer) 1

redis 127.0.0.1:6379> sadd tag:web 2

(integer) 1

redis 127.0.0.1:6379> sadd tag:erlang 3

(integer) 1

 

如果要取得即属于ruby又属于web的书:

redis 127.0.0.1:6379> sinter tag:ruby tag:web

1) "2"

如果要取得属于ruby,但不属于web的书:

redis 127.0.0.1:6379> sdiff tag:ruby tag:web

1) "1"

属于ruby和属于web的书的合集:

redis 127.0.0.1:6379> sunion tag:ruby tag:web

1) "1"

2) "2"

 


Redis 键值设计使用总结 阅读详情

相关推荐

记录:N10激光雷达串口编程,将数据存进 SQLite,并进行 ROS2 - cartographer 单雷达建图

N10 系列采用 TOF(time of flight)测距原理,通过测量调制激光的发射、返回时间差来测量物体与传感器的相对距离。激光发射器发出调制脉冲激光,内部定时器开始 从t1时刻计算时间,当激光照射到目标物体后,部分能量返回,当雷达接收到返回的激光信号时,在t2时刻停止内部定时器计时,光速C,激光雷达到达物体的距离D为:经过N10系列激光雷达内嵌的信号处理单元的实时解算得到探测物体的距离值,结合高精度自适应角度测量模块输出的角度信息,可以得到量程内周围 360 度环境 的二维平面信息。

m0_74013893的博客 1096

redis incr命令最大值问题

redis incr 最大值是 Long.MAX_VALUE的值 大于long.MAX_VALUE后就会抛出异常 @Test public void test3() throws InterruptedException { // Long textincrment1 = redisTemplate.opsForValue().increment("...

liuqiang211的专栏 8405

Ubuntu22.04安装ROS1

代表使用 2 线程进行编译,可以根据 CPU 适当调整。如果出现小乌龟窗口,说明安装成功 🎉!启动成功,则打开另一个终端,测试。需要解决一些兼容性问题,因为。由于 Ubuntu 22.04。过程,确保成功安装。

asafriend的博客 4643

Redis键值设计最佳实践

Key的最佳实践固定格式:[业务名]:[数据名]:[id]足够简短:不超过44字节不包含特殊字符Value的最佳实践:合理的拆分数据,拒绝BigKey选择合适数据结构Hash结构的entry数量不要超过1000设置合理的超时时间。

coderge's 优快云 Blog. 453

Python从0到100(一):初识Python及安装Pycharm

Python从0到100(一):初识Python及安装Pycharm。Python是由荷兰人吉多·范罗苏姆(Guido von Rossum)发明的一种编程语言,是目前世界上最受欢迎和拥有最多用户群体的编程语言。

拥有百余位万粉技术博主、200余位可合作代发博主,私域技术社群规模达千人,商务合作私信 8万+

爬虫不宕机!2026自愈式爬虫开发(Python+AI自动应对页面改版)

传统爬虫最大的痛点是"页面一改就宕机":前端布局调整、CSS选择器失效、数据结构变化,都会导致爬虫瘫痪,需要人工逐行修改代码。2026年,基于AI的自愈式爬虫成为行业标配:通过大模型自动识别页面结构变化、适配新的元素定位规则、修复数据提取逻辑,实现"页面改版不宕机,AI自动自愈"的企业级效果。本文从零讲解如何用Python+AI构建自愈式爬虫,聚焦页面改版自适应、故障自动修复、规则动态更新三大核心能力,附带可直接落地的生产级代码。问题场景解决方案LLM生成规则格式错误。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1215

基于Redis实现分布式自增主键

基于Redis实现分布式自增主键

弹指天下 2410

私家侦探如何追踪难以找到的人,掌握几个很少人知道的在线免费查询网站,搜索人名、电话号码以及地址的开源网站

私家侦探如何追踪难以找到的人,掌握几个很少人知道的在线免费查询网站,搜索人名、电话号码以及地址的开源网站。

代码讲故事 6484

Redis键值设计

Key的最佳实践固定格式:[业务名]:[数据名]:[id]足够简短:不超过44字节不包含特殊字符Value的最佳实践:合理的拆分数据,拒绝BigKey选择合适数据结构Hash结构的entry数量不要超过1000设置合理的超时时间。

m0_73939789的博客 853

热力学仿真软件:SimScale_(1).SimScale入门与基础操作

导航栏:位于页面顶部,包含项目管理、仿真设置、结果分析等主要功能。项目列表:展示用户创建的所有项目。工作区:用于进行具体的操作,如几何建模、网格划分、边界条件设置等。控制台:显示操作日志和仿真进度。网格划分是将几何模型离散化为一系列小单元的过程,这些单元用于求解热力学方程。SimScale提供了多种网格划分方法,包括结构化网格和非结构化网格。SimScale提供了丰富的API接口,用户可以通过编程语言进行二次开发,实现自动化仿真和结果分析。项目管理:创建、删除和管理项目。几何建模:创建、导入和修复几何模型。

kkchenjj的博客 1864

Arduino与Proteus仿真实例-LCD2004-I2C(PCF8574)驱动仿真

LCD2004-I2C(PCF8574)驱动仿真 PCF8574/74A 通过两线双向 I2C 总线(串行时钟 (SCL)、串行数据 (SDA))提供通用远程 I/O 扩展。 LCD2004,即2004字符型液晶显示器,是一种点阵模块,用于显示字母、数字、字符等。 它由 5x8 个点阵位置组成; 每个位置可以显示一个字符。 两个字符之间有一个点间距,行之间有一个空格,从而将字符和行分开。 模型 2004 表示它显示 4 行,每行 20 个字符。 在前面的实例中对PCF8574和LCD2004的已经做了详细介

视觉与物联智能 1165

【Redis】最佳实践——Redis键值设计

Key的最佳实践固定格式:[业务名]:[数据名]:[id]足够简短:不超过44字节不包含特殊字符Value的最佳实践:合理的拆分数据,拒绝BigKey选择合适数据结构Hash结构的entry数量不要超过1000设置合理的超时时间。

奶酪的博客 1979

姿态传感器/陀螺仪之ICM-42670-P应用原理图设计

ICM-42670-P采用LGA-14封装,尺寸为2.5x3x0.76毫米,工作电压范围为1.71V至3.6V,支持I3CSM、I2C和SPI串行通信接口。其设计目标是提供高精度、低功耗和小型化的解决方案,以满足消费类和工业应用的需求。ICM-42670-P是一款由TDK InvenSense推出的高性能六轴MEMS运动追踪传感器,集成了3轴陀螺仪和3轴加速度计,适用于多种应用场景,包括可穿戴设备、游戏控制器、无人机、AR/VR设备等。

corlin6688的博客 1201

Redis点赞业务的设计与实现(Redis键值设计)

hello你好我是辰兮,很高兴你能来阅读,关于Redis的相关知识我们除了要简单的了解外,还要真正的在项目中实践和应用,本篇是关于Redis点赞的相关具体业务键值设计分享,分享获取新知,大家一起进步! 文章目录一、Redis序言二、Redis点赞 一、Redis序言 一年前就已经接触了Redis的相关知识,了解了这个强大的Redis缓存数据库,接下来会陆续抽时间整理Redis的相关具体应用在电影购票,点赞等相关场景的实现和Redis键值的设计思路,希望自己努力成为一名合格的开发工程师! Redis简.

末尾卡片和博主交流学习! 2900

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Redis进阶-Redis键值设计及BigKey问题

文章目录键值设计key设计value设计big key的危害命令使用客户端使用其他建议 键值设计 key设计 (1)【建议】: 可读性和可管理性 以业务名(或数据库名)为前缀(防止key冲突),用冒号分隔,比如业务名:表名:id o2o:order:1 (2)【建议】:简洁性 保证语义的前提下,控制key的长度,当key较多时,内存占用也不容忽视,例如: user:{uid}...

小工匠 2万+

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Redis15-Redis键值设计

Redis的Key虽然可以自定义,但最好遵循下面的几个最佳实践约定: 遵循基本格式:[业务名称]:[数据名]:[id] 长度不超过44字节 不包含特殊字符

m0_73902080的博客 1001

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

redis专题:redis键值设计、性能优化以及redis连接池配置

文章目录1.redis键值设计①:key名设计②:value设计2. 命令使用3. redis连接池配置参数设计 1.redis键值设计 redis合理的键值设计,可以增加可读性和可管理性,特别在大型项目中,要特别注意! ①:key名设计 【建议】: 可读性和可管理性 以业务名(或数据库名)为前缀(防止key冲突),用冒号分隔,比如业务名:表名:id //表示交易系统中的订单号 1 trade:order:1 【建议】:简洁性 保证语义的前提下,控制key的长度,当key较多时,内存占用也不容忽视

qq_1149513559的博客 2024

Redis高级——键值对设计

Key的最佳实践固定格式:[业务名]:[数据名]:[id]足够简短:不超过44字节不包含特殊字符Value的最佳实践:合理的拆分数据,拒绝BigKey选择合适数据结构Hash结构的entry数量不要超过1000设置合理的超时时间。

康小庄的博客 1820

【Redis】Redis最佳实践:键值设计

无论是哪种数据类型, key都是string类型,string类型的底层编码包含int、embstr和raw三种。如果key中全是数字,那么就会直接以int类型去存储,而int占用的空间也是最小的,当然出于业务需求,我们不可能将key设计为一个全数字的,而如果不是纯数字,底层存储的就是SDS内容,如果小于44字节,就会使用embstr类型,embstr在内存中是一段连续的存储空间,内存占用相对raw来说较小,而当字节数大于44字节时,会转为raw模式存储,在raw模式下,内存空间不是连续的,而是采用一个指针

qq_50675319的博客 4080

Redis-键值设计

在redis中存储的value空间大,导致效率变低。

QPiker的博客 854

Redis高级优化实战:从键值设计到集群调优

本文深入探讨Redis的高级使用技巧和最佳实践。首先介绍了Redis键值设计规范,包括Key结构设计、避免BigKey陷阱及数据类型选择策略。其次详细讲解了批处理性能优化方法,重点分析Pipeline技术和集群环境下的批处理方案。然后从服务端角度提出持久化配置调优、慢查询优化、安全加固和内存优化等策略。最后对比了集群与主从架构的适用场景,并给出集群部署的解决方案。文章强调Redis优化需要从设计、开发和运维多维度综合考虑,建议根据业务特点建立监控体系,持续优化性能。

yh云想的博客 1342
上一篇: redis DB 使用,包含客户端与jedis
下一篇: Redis 事务
还不够
博客等级 码龄16年 113粉丝 24原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值