百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术教程 > 正文

高并发架构系列:Redis的基本介绍,五种数据类型及应用场景分析

mhr18 2024-10-25 12:37 34 浏览 0 评论

一、Redis基本概念介绍和特性

1.1 Redis基本概念介绍

1.Redis是远程的,有客户端和服务端,我们一般说的是服务端;

2.Redis是基于内存的,所以比基于硬盘的MySQL要快很多,但非常吃内存

3.Redis是非关系型数据库。本质上也是数据库,但MySQL关系型数据库存储时必须定义数据词典,而Redis则不需要。

1.2 Redis 和 Memcached比较

Redis数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。

与Memcached一样,为了保证效率,数据都是缓存在内存中。区别的是Redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。

1.3 Redis支持主从同步。

数据可以从主服务器向任意数量的从服务器上同步,从服务器可以是关联其他从服务器的主服务器。这使得Redis可执行单层树复制。存盘可以有意无意的对数据进行写操作。由于完全实现了发布/订阅机制,使得从数据库在任何地方同步树时,可订阅一个频道并接收主服务器完整的消息发布记录。同步对读取操作的可扩展性和数据冗余很有帮助。

二、Redis的应用场景

2.1 缓存

Redis常常作为数据缓存

当某些系统接口比较慢的时候,我们可以把一些数据放在Redis中缓存起来,下次取数据就不进行非常耗时的SQL操作了,直接从缓存中取数据,提升系统性能最常用的方法之一;

2.2 队列

push和pop操作保证了原子性的实现;

2.3 数据存储

所有的增删改查都是在Redis中进行,Redis有硬盘的持久化机制,定期进行存储,保证了数据的完整性和安全性。

  • 查看redis客户端: which redis-cli
  • 登录:redis-cli(默认登录本机6379端口)
  • info命令查看redis信息

三、Redis数据类型

在redis里边,除了\n和空格 不能作为名字的组成内容外,其他内容都可以作为key的名字部分。名字长度不做要求。


3.1 String字符串类型的操作



功能:提供字符串或者整型操作。

set key value(string/int/float)
get key
incr string [value]//自增
decrby string [value] //自减

string是redis最基本的类型

redis的string可以包含任何数据。包括jpg图片(二进制)或者序列化的对象。

单个value值最大上限是1G字节。

如果只用string类型,redis就可以被看作加上持久化特性的memcache。

3.2 List链表类型

功能:存储序列集合,可用于队列,push和pop操作

lpush 左进
rpop 右出
llen key 查看list有几个元素

List类型是先进先出,适合队列;List不要求里面的元素是唯一的

(一)介绍

获得最新的10个登录用户信息: select * from user order by logintime desc limit 10;

以上sql语句可以实现用户需求,但是数据多的时候,全部数据都要受到影响,对数据库的负载比较高。必要情况还需要给关键字段(id或logintime)设置索引,索引也比较耗费系统资源。

如果通过list链表实现以上功能,可以在list链表中只保留最新的10个数据,每进来一个新数据就删除一个旧数据。每次就可以从链表中直接获得需要的数据。极大节省各方面资源消耗

(二)应用

list类型其实就是一个双向链表。通过push,pop操作从链表的头部或者尾部添加删除元素。

这使得list既可以用作栈,也可以用作队列。

上进上出 :栈

上进下出 :队列

  1. lrange key 0 -1 取出所有元素。
  2. lrem key n/-n X 删除指定元素n次。
  3. linsert key after/before key1 key2 在key1后/前插入key2。
  4. rpoplpush key1 key2 将key1右边key左入key2链表,原子性

功能:无序集合,每个元素都不一样

3.3 Set类型

set类型,无序的方式存储多个不同的元素,对元素可以进行快速的添加、查找和删除;相同的元素只算一个

redis的set是string类型的无序集合。

set元素最大可以包含(2的32次方-1)个元素。

关于set集合类型除了基本的添加删除操作,

其他有用的操作还包含集合的取并集(union),交集(intersection), 差集(difference)。通过这些操作可以很容易的实现sns中的好友推荐功能

注意:每个集合中的各个元素不能重复。

该类型应用场合:qq好友推荐。

tom朋友圈(与某某是好友):mary jack xiaoming wang5 wang6 
linken朋友圈(与某某是好友):yuehan daxiong luce wang5 wang6 

3.4 hash类型

功能:存储的是key-value结构,key必须是string

经常用于存储比较复杂的结构,Hash只要求键不一样,比如姓名,年龄等等

插入/修改:hset hash1 key1 12
获取:hget hash1 key1
查看hash长度:hlen key
一次性获取:hmget hash1 key1 key2



3.5 Sort Set排序集合类型

功能:存储是带分数的有序集合,经常用于排行榜

sort set 经常被用作排名例如 班级成绩排名

存储和hash一样,都是一个映射。存储的是分数与元素的映射。可以看出是排行榜。

value必须是全局唯一。

score 是浮点型。

sort set类型操作,如果两个元素的score一样,按照字节顺序排列先后

增加/修改:zadd zset1 10.1 val1
查看个数:zcard zset1
查看排名:zrange zset1 0 2 withscores
查看某个value排名:zrank zset1 val2

和set一样sorted set也是string类型元素的集合,不同的是每个元素都会关联一个。 通过权值可以有序的获取集合中的元素。

该Sort set类型适合场合:

获得热门帖子(回复量)信息:select * from message order by backnum desc limit 5;

(以上需求可以通过简单sql语句实现,但是sql语句比较耗费mysql数据库资源)

案例:利用sort set实现获取最热门的前5帖子信息

排序集合中的每个元素都是值、权的组合 (之前的set集合类型每个元素就只是一个 值)

我们只做一个sort set排序集合,里边只保留5个元素信息,该5个元素是回复量最高的

每个帖子被回复的时候,都有机会进入该集合里边,但是只有回复量最高的前5个帖子会存在于在集合,回复量低的就被删除。

最后

读到这的朋友可以转发关注下,后面还会更新更多系列文章分享阅读!

相关推荐

【推荐】一个开源免费、AI 驱动的智能数据管理系统,支持多数据库

如果您对源码&技术感兴趣,请点赞+收藏+转发+关注,大家的支持是我分享最大的动力!!!.前言在当今数据驱动的时代,高效、智能地管理数据已成为企业和个人不可或缺的能力。为了满足这一需求,我们推出了这款开...

Pure Storage推出统一数据管理云平台及新闪存阵列

PureStorage公司今日推出企业数据云(EnterpriseDataCloud),称其为组织在混合环境中存储、管理和使用数据方式的全面架构升级。该公司表示,EDC使组织能够在本地、云端和混...

对Java学习的10条建议(对java课程的建议)

不少Java的初学者一开始都是信心满满准备迎接挑战,但是经过一段时间的学习之后,多少都会碰到各种挫败,以下北风网就总结一些对于初学者非常有用的建议,希望能够给他们解决现实中的问题。Java编程的准备:...

SQLShift 重大更新:Oracle→PostgreSQL 存储过程转换功能上线!

官网:https://sqlshift.cn/6月,SQLShift迎来重大版本更新!作为国内首个支持Oracle->OceanBase存储过程智能转换的工具,SQLShift在过去一...

JDK21有没有什么稳定、简单又强势的特性?

佳未阿里云开发者2025年03月05日08:30浙江阿里妹导读这篇文章主要介绍了Java虚拟线程的发展及其在AJDK中的实现和优化。阅前声明:本文介绍的内容基于AJDK21.0.5[1]以及以上...

「松勤软件测试」网站总出现404 bug?总结8个原因,不信解决不了

在进行网站测试的时候,有没有碰到过网站崩溃,打不开,出现404错误等各种现象,如果你碰到了,那么恭喜你,你的网站出问题了,是什么原因导致网站出问题呢,根据松勤软件测试的总结如下:01数据库中的表空间不...

Java面试题及答案最全总结(2025版)

大家好,我是Java面试陪考员最近很多小伙伴在忙着找工作,给大家整理了一份非常全面的Java面试题及答案。涉及的内容非常全面,包含:Spring、MySQL、JVM、Redis、Linux、Sprin...

数据库日常运维工作内容(数据库日常运维 工作内容)

#数据库日常运维工作包括哪些内容?#数据库日常运维工作是一个涵盖多个层面的综合性任务,以下是详细的分类和内容说明:一、数据库运维核心工作监控与告警性能监控:实时监控CPU、内存、I/O、连接数、锁等待...

分布式之系统底层原理(上)(底层分布式技术)

作者:allanpan,腾讯IEG高级后台工程师导言分布式事务是分布式系统必不可少的组成部分,基本上只要实现一个分布式系统就逃不开对分布式事务的支持。本文从分布式事务这个概念切入,尝试对分布式事务...

oracle 死锁了怎么办?kill 进程 直接上干货

1、查看死锁是否存在selectusername,lockwait,status,machine,programfromv$sessionwheresidin(selectsession...

SpringBoot 各种分页查询方式详解(全网最全)

一、分页查询基础概念与原理1.1什么是分页查询分页查询是指将大量数据分割成多个小块(页)进行展示的技术,它是现代Web应用中必不可少的功能。想象一下你去图书馆找书,如果所有书都堆在一张桌子上,你很难...

《战场兄弟》全事件攻略 一般事件合同事件红装及隐藏职业攻略

《战场兄弟》全事件攻略,一般事件合同事件红装及隐藏职业攻略。《战场兄弟》事件奖励,事件条件。《战场兄弟》是OverhypeStudios制作发行的一款由xcom和桌游为灵感来源,以中世纪、低魔奇幻为...

LoadRunner(loadrunner录制不到脚本)

一、核心组件与工作流程LoadRunner性能测试工具-并发测试-正版软件下载-使用教程-价格-官方代理商的架构围绕三大核心组件构建,形成完整测试闭环:VirtualUserGenerator(...

Redis数据类型介绍(redis 数据类型)

介绍Redis支持五种数据类型:String(字符串),Hash(哈希),List(列表),Set(集合)及Zset(sortedset:有序集合)。1、字符串类型概述1.1、数据类型Redis支持...

RMAN备份监控及优化总结(rman备份原理)

今天主要介绍一下如何对RMAN备份监控及优化,这里就不讲rman备份的一些原理了,仅供参考。一、监控RMAN备份1、确定备份源与备份设备的最大速度从磁盘读的速度和磁带写的带度、备份的速度不可能超出这两...

取消回复欢迎 发表评论: