Redis入门(一)

新手必看:如何用PhaGCN2和vConTACT2搞定宏病毒组注释(附避坑指南) 本文为宏病毒组研究新手提供了使用PhaGCN2和vConTACT2进行病毒注释的完整实战指南。内容涵盖从Conda环境配置、软件安装、参数解析到结果解读的全流程,并重点分享了整合双工具进行交叉验证的策略与常见报错解决方案,旨在帮助研究者高效、准确地完成病毒分类注释工作。 阅读详情

内容为网络搜集整理,如有侵权,请联系删除!

一、Redis简介

Redis是一个开源的使用 C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
它支持存储多种数据类型,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。
为了保证效率,数据都是缓存在内存中。redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。

二、Redis应用场景

Redis 在 Java Web 主要有两个应用场景:
1、存储缓存用的数据;
2、需要高速读/写的场合使用它快速读/写;

缓存场景:
在日常对数据库的访问中,读操作的次数远超写操作,比例大概在 1:9 到 3:7,所以需要读的可能性是比写的可能大得多的。当我们使用SQL语句去数据库进行读写操作时,数据库就会去磁盘把对应的数据索引取回来,这是一个相对较慢的过程。
如果我们把数据放在 Redis 中,也就是直接放在内存之中,让服务端直接去读取内存中的数据,那么这样速度明显就会快上不少,并且会极大减小数据库的压力,但是使用内存进行数据存储开销也是比较大的,限于成本的原因,一般我们只是使用 Redis 存储一些常用和主要的数据,比如用户登录的信息等。
一般而言在使用 Redis 进行存储的时候,我们需要从以下几个方面来考虑:
(1)、业务数据常用吗?命中率如何?如果命中率很低,就没有必要写入缓存;
(2)、该业务数据是读操作多,还是写操作多?如果写操作多,频繁需要写入数据库,也没有必要使用缓存;
(3)、业务数据大小如何?如果要存储几百兆字节的文件,会给缓存带来很大的压力,这样也没有必要;
(4)、在考虑了这些问题之后,如果觉得有必要使用缓存,那么就使用它!使用 Redis 作为缓存的读取逻辑如下图所示:
在这里插入图片描述
从上图我们可以知道以下两点:
(1)、当第一次读取数据的时候,读取 Redis 的数据就会失败,此时就会触发程序读取数据库,把数据读取出来,并且写入 Redis 中;
(2)、当第二次以及以后需要读取数据时,就会直接读取 Redis,读到数据后就结束了流程,这样速度就大大提高了。
从上面的分析可以知道,读操作的可能性是远大于写操作的,所以使用 Redis 来处理日常中需要经常读取的数据,速度提升是显而易见的,同时也降低了对数据库的依赖,使得数据库的压力大大减少。
下面我们来看看写操作的流程:
在这里插入图片描述
从流程可以看出,更新或者写入的操作,需要多个 Redis 的操作,如果业务数据写次数远大于读次数那么就没有必要使用 Redis。

高速读/写的场景:
在如今的互联网中,越来越多的存在高并发的情况,比如天猫双11、抢红包、抢火车票等,这些场合都是在某一个瞬间或者是某一个短暂的时刻有成千上万的请求到达服务器,如果单纯的使用数据库来进行处理,就算不崩,也会很慢的,轻则造成用户体验极差用户量流失,重则数据库瘫痪,服务宕机,而这样的场合都是不允许的!
所以我们需要使用 Redis 来应对这样的高并发需求的场合,我们先来看看一次请求操作的流程图:
在这里插入图片描述
我们来进一步阐述这个过程:
(1)、当一个请求到达服务器时,只是把业务数据在 Redis 上进行读写,而没有对数据库进行任何的操作,这样就能大大提高读写的速度,从而满足高速响应的需求;
(2)、但是这些缓存的数据仍然需要持久化,也就是存入数据库之中,所以在一个请求操作完 Redis 的读/写之后,会去判断该高速读/写的业务是否结束,这个判断通常会在秒杀商品为0,红包金额为0时成立,如果不成立,则不会操作数据库;如果成立,则触发事件将 Redis 的缓存的数据以批量的形式一次性写入数据库,从而完成持久化的工作。

三、Redis支持数据类型

1、字符串(String)
Redis中的字符串是一个字节序列。Redis中的字符串是二进制安全的,这意味着它们的长度不由任何特殊的终止字符决定。因此,可以在一个字符串中存储高达512MB的任何内容。
示例:

redis 127.0.0.1:6379> set name supcon.com
OK 
redis 127.0.0.1:6379> get name 
"supcon.com"

在上面的示例中,set和get是Redis的命令,name是Redis中使用的键,supcon.com是存储在Redis中的字符串的值。
注意:Redis命令不区分大小写,如SET,Set和set都是同一个命令。字符串值得最大长度是512MB。

2、散列/哈希(Hash)
Redis散列/哈希(Hashes)是键值对的集合。Redis散列/哈希是字符串字段和字符串值之间的映射。因此,它们用于表示对象。每个散列/哈希可以存储多达2^32 - 1个健-值对(超过40亿个)。

示例

redis 127.0.0.1:6379> hmset uaccount username "supcon" password "passswd123" points 200
redis 127.0.0.1:6379> hgetall uaccount 
1)”username” 
2)"supcon" 
3)”password” 
4)"passswd123" 
5)”points” 
6)”200”

在上述示例中,散列/哈希数据类型用于存储包含用户的基本信息的用户对象。这里hmget,hgetall是Redis的命令,而uaccount是键的名称。

3、列表(List)
Redis列表只是字符串列表,按插入顺序排序。您可以向Redis列表的头部或尾部添加元素。
示例

redis 127.0.0.1:6379> lpush alist redis 
(integer) 1 
redis 127.0.0.1:6379> lpush alist mongodb 
(integer) 2 
redis 127.0.0.1:6379> lpush alist sqlite 
(integer) 3 
redis 127.0.0.1:6379> lrange alist 0 10  
1) "sqlite" 
2) "mongodb" 
3) "redis"

列表的最大长度为2^32 - 1个元素(4294967295,每个列表可容纳超过40亿个元素)。

4、集合(Set)
Redis集合是字符串的无序集合,集合成员是唯一的,类似java中的set集合。在Redis中,您可以添加,删除和测试成员存在的时间O(1)复杂性。
集合中的最大成员数量为2^32 - 1(即4294967295,每个集合中元素数量可达40亿个)个。

示例

redis 127.0.0.1:6379> sadd supconlist redis 
(integer) 1 
redis 127.0.0.1:6379> sadd supconlist mongodb 
(integer) 1 
redis 127.0.0.1:6379> sadd supconlist sqlite 
(integer) 1 
redis 127.0.0.1:6379> sadd supconlist sqlite 
(integer) 0 
redis 127.0.0.1:6379> smembers supconlist 
1) "sqlite" 
2) "mongodb" 
3) "redis"

注意:在上面的示例中,sqlite被添加了两次,但是由于集合的唯一属性,所以它只算添加一次。

5、有序集合(Sorted set)
有序集合类似于Redis的集合,是不重复的字符集合。不同之处在于,有序集合的每个成员都与分数相关联,这个分数用于按最小分数到最大分数来排序的排序集合。虽然成员是唯一的,但分数值可以重复。
集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。 集合中最大的成员数为 2^32-1 (4294967295, 每个集合可存储40多亿个成员)。
示例

redis 127.0.0.1:6379> zadd supconset 0 redis
(integer) 1 
redis 127.0.0.1:6379> zadd supconset 0 mongodb
(integer) 1 
redis 127.0.0.1:6379> zadd supconset 1 sqlite
(integer) 1 
redis 127.0.0.1:6379> zadd supconset 1 sqlite
(integer) 0 
redis 127.0.0.1:6379> ZRANGEBYSCORE supconset 0 1000  
1) "mongodb" 
2) "redis" 
3) "sqlite"
ptrade量化策略之ST股弱转强,回测年化115% 本策略的核心是精选ST股票,国九条过滤,防止直接暴雷退市,只做ST股票的弱转强 阅读详情

相关推荐

RGB接口电容触摸屏驱动(一)模块介绍

RGB接口电容触摸屏驱动(一)模块介绍

杰克拉力船长个人博客 7880

Redis入门 一

Redis入门 一

小树不倒我不倒 302

docker配置国内镜像源

【代码】docker配置国内镜像源。

愿听风成曲 9616

一.Redis入门

背景介绍欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 欢迎使用Markdown...

weixin_45913672的博客 215

手把手教你用二茂铁催化剂搞定醇的动力学拆分(保姆级实验避坑指南)

本文详细介绍了使用平面手性二茂铁催化剂进行醇的动力学拆分的全流程,包括催化剂选择与制备、反应体系搭建与条件优化、实时监测与反应淬灭、产物分离与纯化等关键步骤。通过实战案例和避坑指南,帮助实验人员实现>98% ee的拆分效果,特别适合需要高光学纯度二级芳基醇或烯丙醇的研究者。

weixin_30500105的博客 437

【HOJ系列】HOJ判题机部署

【HOJ系列】HOJ判题机部署

随风浪仔的专栏 904

一、Redis快速入门

本文全面讲解Redis核心知识,涵盖五种数据类型命令详解、Java客户端(Jedis/SpringDataRedis)使用技巧,深入分析序列化问题与解决方案,并通过实战案例演示连接池配置和StringRedisTemplate应用,帮助开发者高效掌握Redis数据库操作与性能优化。

m0_73941339的博客 1274

在Windows10上安装WSL2

WSL2是微软提供的Windows子系统,允许在Windows 10和11上运行Linux环境,提供更好的性能和兼容性。安装WSL2需要启用WSL功能、更新系统、安装WSL2内核,并设置为默认版本。之后,可以通过Microsoft Store安装Linux发行版,并使用WSL命令启动和管理它们。

howard2005的专栏 5943

Redis入门(一)

Redis入门(一) 日期:2015年10月17日  作者:雨水,优快云博客:http://blog.youkuaiyun.com/gobitan 概述 注:本文为一书的读书笔记。 Redis是Web开发社区中最热门的内存数据库之一! Redis是一个开源的高性能键值对数据库! Redis是REmote DIctionary Server(远程字典服务器)的缩写,它以字典结构存储数据,并

家辉自留地 914

在 SAP ABAP 生态中偏爱面向对象,而不是过程式堆叠

本文探讨了ABAP开发中过程式与面向对象编程的共存现状及优化方向。文章指出,虽然过程式编程在ABAP中仍广泛存在,但随着业务复杂度提升,面向对象编程在可维护性、可测试性和重构便利性方面展现出明显优势。作者建议将过程式代码作为"适配层",仅负责输入输出转换,而将核心业务逻辑封装在类中。文章通过实际案例展示了这种架构如何提高交付效率,并提供了将Function Module转化为"薄包装"的具体实现方案,强调面向对象设计在SAP Gateway和RAP等现代架构中的重要性

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 137

windows中通过docker部署LocateAnything-3B模型

windows中通过docker部署LocateAnything-3B模型

yilvyangguang520的博客 485

【Redis】Redis入门详解(一)

一、Redis概述 ①.Redis简介 Redis是一个使用C语言编写的key-value开源的NOSQL存储系统。(区别于MySQL的二维表格的形式存储) ②.Redis特点 高效性:Redis读取的速度是110000次/s,写的速度是81000次/s 原子性:Redis的所有操作都是原子性的,同时Redis还支持对几个操作全并后的原子性执行。 支持多种数据结构:string(字符串);lis...

Together 1万+

打破RK3588 GPIO中断响应延迟的枷锁,开启高效编程

本文针对RK3588芯片在智能安防和工业自动化应用中出现的GPIO中断响应延迟问题展开深入分析。通过硬件原理剖析,发现延迟主要源于中断控制器优先级设置、线路干扰等硬件因素,以及中断处理函数复杂、内核调度延迟等软件问题。提出硬件优化方案包括合理布局布线、电源稳定设计,软件层面则通过精准配置设备树、精简中断处理函数、利用工作队列等内核机制进行优化。测试结果显示,优化后中断响应延迟从50-80ms降至10-20ms,高负载下也能稳定在50ms以内。文章最后展望了AI技术在中断调度中的潜在应用价值。

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 364

Redis学习(一)redis入门

贴心小建议:命令不要死记,学会查询就好啦Redis为了方便我们学习,将操作不同数据类型的命令也做了分组,在官网( https://redis.io/commands )可以查看到不同的命令:当然我们也可以通过Help命令来帮助我们去查看命令。

LB_Wuyanzu的博客 978

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

一、Redis入门

一、Redis入门

LY2761800075的博客 414

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Redis学习——入门篇①

Redis学习——入门篇①

这里有一只小马吖 1652

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

【Redis入门到精通一】什么是Redis?

不仅如此,Redis 还可以将内存的数据利⽤快照和⽇志的形式保存到硬盘上,这样在发⽣类似断电或者机器故障的时候,内存中的数据不会“丢失”。从 Redis 的官⽅公司统计来看,有很多重量级的公司都在使⽤Redis,如国外的 Twitter,Instagram、Stack Overflow、Github 等,国内就更多了,如果单单从体量来统计,新浪微博可以说是全球最⼤的 Redis 使⽤者,除了新浪微博,还有像阿⾥巴巴、腾讯、搜狐、优酷⼟⾖、美团、⼩⽶、唯品会等公司都是 Redis 的使⽤者。

2203_75565612的博客 1288

你不知道的Redis一-Redis入门

一、Redis是什么 Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API其中value 可以为string、hash、list、set、zset 等多种数据结构,可以满足很多应用场景。还提供了键过期,发布订阅,事务,流水线,等附加功能 流水线 Redis 的流水线功能允许客户端一次将多个命令请求发送给服务器,并将被执行的多个命令请求的结果在一个命令回复中全部返回给客户端,使用这个功能可以有效地减少客户端在执行多个命令

b379685397的博客 1万+

一小时快速入门Redis

Redis快速入门1. redis单机版安装2. redis配置文件(redis.conf)3.持久化之RDB和AOF4.redis导入导出 本文主要针对redis初学者对redis安装、配置文件、两种持久化方式等进行快速入门学习。 1. redis单机版安装 redis5.0.4安装 #tar -xvzf redis-5.0.4.tar.gz #cd redis-5.0.4 #make && make install PREFIX=/data/redis #cp redis-5.0.4/

qq_21297965的博客 303

Redis学习笔记(一)简介、入门

简介 redis是一个非关系型数据库,key-value存储系统。支持存储类型包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。redis还支持各种不同方式的排序。 特点 (1) 高速读取数据(in...

huangpf_vcx 319

Redis入门到精通【基础篇】【一】

Redis是一个使用C语言写成的,开源的高性能key-value非关系缓存数据库

m0_74114518的博客 1392

Redis入门到精通(一):入门Redis看这一篇就够了

赞 / 踩、粉丝、共同好友 / 喜好、推送、下拉刷新等是社交⽹站的必备功能,由于社交⽹站访问量通常⽐较⼤,⽽且传统的关系型数据不太合适保存这种类型的数据,Redis 提供的数据结构可以相对⽐较容易地实现这些功能。排⾏榜系统⼏乎存在于所有的⽹站,例如按照热度排名的排⾏榜,按照发布时间的排⾏榜,按照各种复杂维度计算出的排⾏榜,Redis 提供了列表和有序集合的结构,合理地使⽤这些数据结构可以很⽅便地构建各种排⾏榜系统。所谓位图,就是用每一位来存放某种状态,适用于海量数据,整数,数据无重复的场景。

daydayup 2319

Redis入门一:Redis实战读书笔记

Redis提供5种不同类型的数据结构,并存储键与5种不同类型的值之间的映射,各式各样的问题都可以自然地映射到这些数据结构上。通过复制、持久化和客户端分片等特性,可以将存储在内存的键值对数据持久化到硬盘,可以使用复制特性来扩展读性能,还可以使用客户端分片来扩展写性能,用户可以很方便地将Redis扩展成一个能够包含数百GB数据、每秒处理上百万次请求的系统。(分片是一种将数据划分为多个部分的方法,对数据...

肥叔菌的博客 1万+

Redis教程(一) Redis入门教程

Redis 是一个 Key-Value 存储系统。和 Memcached 类似,它支持存储的 value 类型相对更多,包括 string(字符串)、 list(链表)、 set(集合)和 zset(有序集合)。这些数据类型都支持 push/pop、add/remove 及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,Redis 支持各种不同方式的排序。与memcached 一样,为了保证效率,数据都是缓存在内存中。区别的是Redis 会周期性的把更新的数据写入磁盘或者把修改操作写入

yuan_xw的专栏 5002
上一篇: Java基础(一)
下一篇: Redis入门(二)
詹詹自喜KING
博客等级 码龄11年 40粉丝 64原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值