Redis数据类型之String的应用场景(案例详解)

您所在的位置:网站首页 redis的实际应用 Redis数据类型之String的应用场景(案例详解)

Redis数据类型之String的应用场景(案例详解)

2023-09-08 20:32| 来源: 网络整理| 查看: 265

【辰兮要努力】:hello你好我是辰兮,很高兴你能来阅读,昵称是希望自己能不断精进,向着优秀程序员前行! 博客来源于项目以及编程中遇到的问题总结,偶尔会有读书分享,我会陆续更新Java前端、后台、数据库、项目案例等相关知识点总结,感谢你的阅读和关注,希望我的博客能帮助到更多的人,分享获取新知,大家一起进步! 吾等采石之人,应怀大教堂之心,愿大家奔赴在各自的热爱里…

文章目录 一、文章序言二、常用命令三、业务场景

一、文章序言

Redis概念:Redis (REmote DIctionary Server) 是用 C 语言开发的一个开源的高性能键值对(key-value)数据库。

为什么会出现Redis呢?它的到来是为了解决什么样的问题? 在这里插入图片描述

Redis 是一个NOSQL类型数据库,是为了解决高并发、高扩展,大数据存储等一系列的问题而产生的数据库解决方案,是一个非关系型的数据库。

Redis中常见的数据类型我们一定要知道

如果你是redis的作者你会给redis设计什么数据类型呢?

Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。

我知道很抽象,为此整理了一个思维导图,我们对比一下Java中的数据结构,每一个数据结构的存在都有特定的应用场景 在这里插入图片描述

Redis数据存储格式 Redis自身是一个 Map,其中所有的数据都是采用 key : value 的形式存储

数据类型指的是存储的数据的类型,也就是 value 部分的类型,key 部分永远都是字符串

本篇主要详解string类型简单使用和业务场景

二、常用命令

Redis中string 类型

存储的数据:单个数据,最简单的数据存储类型,也是最常用的数据存储类型

Key是String类型的,Value是Java中所有的基本类型都可以。

string 类型数据的基本操作

添加/修改数据

set key value

获取数据

get key

删除数据

del key

建议初学者自己安装Redis测试,此处是截图demo

在这里插入图片描述设置key-value,然后更加key获取value 在这里插入图片描述

string 类型数据的基本操作

添加/修改多个数据

mset key1 value1 key2 value2

获取多个数据

mget key1 key2

批量设置的语法前面带个m,像我第一次打就犯错了

在这里插入图片描述

获取数据字符个数(字符串长度)

strlen key

在这里插入图片描述 追加信息到原始信息后部(如果原始信息存在就追加,否则新建)

append key value

看看案例在手比较容易理解 在这里插入图片描述

del key [key...] //删除一个或多个键值对

在这里插入图片描述

setnx key value //存入一个不存在的键值对,如果key不存在,同set;若存在,则不做任何操作。

在这里插入图片描述 将key中存储的数字加1

INCR key

将key中存储的数字减1

DECR key

将key中所存储的值加上increment

INCRBY key increment

将key中所存在的值减去decrement

DECRBY key decrement

在这里插入图片描述 如上内容建议初学者在客户端实践

三、业务场景

Redis中string的使用场景根据它自身特点决定

常见的有如下几种情况,我简单举例说明 在这里插入图片描述

业务场景

1、缓存功能:部分数据第一次查询查询数据库,查询完后存入redis中,后续再获取可以从redis中获取 在这里插入图片描述

2、验证码:网站登录中常有验证码,我们可以用此数据类型,手机号作为key,验证码作为value存储在redis中,设置过期时间,后续如果用户输入验证码,我们从redis中取值对比,如果过期则无效

set 13030303300 123456

3、数字计数:比如帖子有点赞数,可以以帖子的id作为key,点赞总数作为value; 还比如访问量等,用户每次访问,访问总数可以加一,记录在redis中; 抖音的关注数,当大V注册抖音的时候,关注数会在非常短的时间内增加,这里我们可以用redis记录,一段时间后同步到mysql等数据库中;

user-id:10086:fans → 123456 user-id:10086:blogs → 999 user-id:10086:likes → 888

4、存储对象:以json形式存储,常见key=id value=json格式数据,如商品id为key,商品信息为value

{"id":10086,"name":"辰兮要努力","fans":123456,"blogs":999, "likes":888}

介绍一个之前接触过的案例:电影座位的排片,电影排片id为key,此场次座位信息为value,主要记录此场次的座位排布情况,场次座位以json形式存储在redis中,可以设置过期时间等同步应用到电影购票中,用户看到的座位从情况根据电影排片的key从Redis中取出

5、共享session

如我们第一次访问 https://editor.csdn.net这个域名,可能会对应这个IP 112.14.111.222的服务器,然后第二次访问,IP可能会变为112.13.121.219的服务器;负载均衡,一个域名对应多个服务器,将访问量分担到其他的服务器,这样很大程度的减轻了每个服务器上访问量 在这里插入图片描述 因为服务器都会有自己的会话session会导致用户每次刷新网页又要重新登录,为了解决这个问题,我们用redis将用户session集中管理,每次获取用户更新或查询登录信息都直接从redis中集中获取

这里的本质还是将某一个东西存入redis缓存中,和缓存功能类似,描述的是不同的应用场景

负载均衡:把众多的访问量分担到其他的服务器上,让每个服务器的压力减少

6、分布式锁

适用场景:在一个集群环境下,多个web应用时对同一个商品进行抢购和减库存操作时,可能出现超卖时会用到分布式锁

setnx key value //存入一个不存在的键值对,如果key不存在,同set;若存在,则不做任何操作

语法:SETNX key value 功能:当且仅当 key 不存在,将 key 的值设为 value ,并返回1; 若给定的 key 已经存在,则 SETNX 不做任何动作,并返回0。

在这里插入图片描述 在实践的业务场景中:自己接触的项目中缓存,计数和存对象我使用过,其余的关于共享session,分布式锁的具体应用我暂时没有使用过,具体使用和实践代码可以参考更好的文章,初次学习理解的时候可能比较抽象,多看看图片会帮助我们理解,希望我的分享对能让你对Redis中的string存储模型有更深入的理解!

在这里插入图片描述

我会陆续整理Redis其余数据类型的实践和使用,我们下期再见!

非常感谢你阅读到这里,如果这篇文章对你有帮助,希望能留下你的点赞👍 关注❤️ 分享👥 留言💬thanks!!!

2021年5月25日22:12:47 愿你们奔赴在自己的热爱里!



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3