
redis
文章平均质量分 63
NewBee.Mu
这个作者很懒,什么都没留下…
展开
-
redis内部工作机制
本文将分五个部分来分析和总结Redis的内部机制,分别是:Redis数据库、Redis客户端、Redis事件、Redis服务器的初始化步骤、Redis命令的执行过程。首先介绍一下Redis服务器的状态结构。Redis使用一个类型为“redisServer”的数据结构来保存整个Redis服务器的状态(每个属性按照即将讲解的顺序进行排序):struct redisServer {int dbnum;//服务器的数据库数量,值由服务器配置的“databases”选项决定,默认为16redisDb *db;转载 2022-02-07 15:31:05 · 304 阅读 · 0 评论 -
docker安装redis
我们拉取官方的最新版本的镜像:docker pull redis:latest使用以下命令来查看是否已安装了 redis:docker images安装完成后,我们可以使用以下命令来运行 redis 容器:docker run -itd --name redis-test -p 6379:6379 redis-p 6379:6379:映射容器服务的 6379 端口到宿主机的 6379 端口。外部可以直接通过宿主机ip:6379 访问到 Redis 的服务。最后我们可以通过 doc原创 2021-12-28 14:02:31 · 795 阅读 · 0 评论 -
用自己的阿里云服务器模拟公司服务器安装redis
我来研究一下我用我自己的阿里云服务器能不能模拟出我是怎么在公司的服务器上安装redis的。在自己的服务器上,自己肯定是root用户。但是在公司里,肯定不可能随便拿着root用户用,所以我们要先创建一个user用户来供我们使用。1、首先创建一个用户名为user的普通用户:useradd user2、然后设置登录密码:passwd user然后会提示你输入密码,输入即可这个时候就创建user用户成功,然后我们用user用户登录1、redis安装1.1、安装要求用户及目录准备见下表(文件不原创 2021-12-26 21:07:31 · 653 阅读 · 0 评论 -
项目中redis的简单使用
字符串在redis中的存入,取出和删除@Autowirdprivate StringRedisTemplate stringRedisTemplate;//存入redis// key// value// 缓存的默认超时时间,例子是2小时// 时间单位,例子是秒stringRedisTemplate.opsForValue().set("key","value",2*60*60,TimeUnit.SECONDS);//从redis中取出stringRedisTemplate.opsFo原创 2021-12-15 11:41:48 · 1244 阅读 · 0 评论 -
redis知识点合集
名称链接redis常用的数据结构https://blog.youkuaiyun.com/NewBeeMu/article/details/115175327Redis实际应用场景https://blog.youkuaiyun.com/NewBeeMu/article/details/115201907redis缓存问题https://blog.youkuaiyun.com/NewBeeMu/article/details/115209124Redis为什么这么快https://blog.csdn....原创 2021-04-07 16:04:46 · 111 阅读 · 0 评论 -
分布式锁之Redis实现
在Java中,关于锁我想大家都很熟悉。在并发编程中,我们通过锁,来避免由于竞争而造成的数据不一致问题。通常,我们以synchronized、Lock来使用它。但是Java中的锁,只能保证在同一个JVM进程内中执行。如果在分布式集群环境下呢?一、分布式锁分布式锁,是一种思想,它的实现方式有很多。比如,我们将沙滩当做分布式锁的组件,那么它看起来应该是这样的:1、加锁在沙滩上踩一脚,留下自己的脚印,就对应了加锁操作。其他进程或者线程,看到沙滩上已经有脚印,证明锁已被别人持有,则等待。2、解锁把脚印从原创 2021-03-26 17:34:11 · 149 阅读 · 0 评论 -
为什么Redis是单线程的
1、官方答案因为Redis是基于内存的操作,CPU不是Redis的瓶颈,Redis的瓶颈最有可能是机器内存的大小或者网络带宽。既然单线程容易实现,而且CPU不会成为瓶颈,那就顺理成章地采用单线程的方案了。2、性能指标关于redis的性能,官方网站也有,普通笔记本轻松处理每秒几十万的请求。3、详细原因(1)不需要各种锁的性能消耗Redis的数据结构并不全是简单的Key-Value,还有list,hash等复杂的结构,这些结构有可能会进行很细粒度的操作,比如在很长的列表后面添加一个元素,在hash当原创 2021-03-25 17:49:48 · 170 阅读 · 0 评论 -
Redis为什么这么快
1、完全基于内存绝大部分请求是纯粹的内存操作,非常快速。数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是O(1);2、数据结构简单对数据操作也简单,Redis中的数据结构是专门进行设计的;3、采用单线程避免了不必要的上下文切换和竞争条件,也不存在多进程或者多线程导致的切换而消耗 CPU,不用去考虑各种锁的问题,不存在加锁释放锁操作,没有因为可能出现死锁而导致的性能消耗;4、使用多路I/O复用模型,非阻塞IO;5、使用底层模型不同它们之间底层实现方式以原创 2021-03-25 17:06:12 · 108 阅读 · 0 评论 -
redis缓存问题
1、缓存雪崩缓存雪崩是指缓存同一时间大面积的失效,所以,后面的请求都会落到数据库上,造成数据库短时间内承受大量请求而崩掉。解决方案1、缓存数据的过期时间设置随机,防止同一时间大量数据过期现象发生。2、一般并发量不是特别多的时候,使用最多的解决方案是加锁排队。3、给每一个缓存数据增加相应的缓存标记,记录缓存的是否失效,如果缓存标记失效,则更新数据缓存。2、缓存穿透缓存穿透是指缓存和数据库中都没有的数据,导致所有的请求都落到数据库上,造成数据库短时间内承受大量请求而崩掉。解决方案1、接口层增加原创 2021-03-25 15:05:50 · 216 阅读 · 0 评论 -
Redis实际应用场景
Redis在很多方面与其他数据库解决方案不同:它使用内存提供主存储支持,而仅使用硬盘做持久性的存储;它的数据模型非常独特,用的是单线程。另一个大区别在于,你可以在开发环境中使用Redis的功能,但却不需要转到Redis。1、显示最新的项目列表下面这个语句常用来显示最新项目,随着数据多了,查询毫无疑问会越来越慢。SELECT * FROM 表名 WHERE ... ORDER BY time DESC LIMIT 10 在Web应用中,“列出最新的回复”之类的查询非常普遍,这通常会带来可扩展性问题。原创 2021-03-25 14:51:30 · 207 阅读 · 0 评论 -
redis常用的数据结构
1、String字符串String 数据结构是简单的 key-value 类型,value 不仅可以是 String,也可以是数字(当数字类型用 Long 可以表示的时候encoding 就是整型,其他都存储在 sdshdr 当做字符串)。使用 Strings 类型,可以完全实现目前 Memcached 的功能,并且效率更高。还可以享受 Redis 的定时持久化(可以选择 RDB 模式或者 AOF 模式),操作日志及 Replication 等功能。下图描述了字符串常用的三个命令:命令行为基原创 2021-03-24 16:24:35 · 153 阅读 · 0 评论 -
Redis的三大策略
1、持久化策略(内存到磁盘上)RDB全部选中的数据进行全量备份AOF日志记录修改指令增量备份针对上一次选中的数据2、内存淘汰策略noeviction默认策略,不删除数据allkeys-lru所有key中,删除最近最少使用的数据volatile-lru设置过期时间的所有key中,选取最近最少使用的数据删除volatile-random在所有key中,随机删除设置过期时间key的数据volatile-ttl设置过期时间key中,删除存活时间最短的数据3原创 2021-04-07 15:49:25 · 1558 阅读 · 0 评论 -
redis的多种模式
单机模式这个最简单,一看就懂。就是安装一个redis,启动起来,业务调用即可。具体安装步骤和启动步骤就不赘述了,网上随便搜一下就有了。单机在很多场景也是有使用的,例如在一个并非必须保证高可用的情况下。优点部署简单,0成本。成本低,没有备用节点,不需要其他的开支。高性能,单机不需要同步数据,数据天然一致性。缺点可靠性保证不是很好,单节点有宕机的风险。单机高性能受限于CPU的处理能力,redis是单线程的。单机模式选择需要根据自己的业务场景去选择,如果需要很高的性能、可靠性,单机就不原创 2021-04-07 11:48:33 · 402 阅读 · 0 评论 -
redis持久化存储之RDB&AOF
**持久化概念:**可以将数据写入到磁盘中,在服务器出现停机或者宕机;再次启动redis时,会将磁盘中的备份数据加载到内存中恢复使用redis中有两种持久化的机制:1、RBD(快照)实现原理redis是由C语言实现的,fork函数会把主线程复制一个子线程,子线程会把内存的数据依次遍历出来,存放到指定的二进制文件当中:dump.rdb实现方式只需要更改配置文件即可,默认提供三种级别的快照方式:指定在多长时间内,有多少次更新操作,就将数据同步到备份文件中,可以多个条件配合优点使用起来简单,只原创 2021-04-07 10:23:36 · 220 阅读 · 0 评论 -
利用redis存储中间字典表进行统计分析
package reportimport config.ConfigHelperimport org.apache.commons.lang3.StringUtilsimport org.apache.spark.sql.SparkSessionimport utils.{GetJedisConn, MakeATPKpi}//利用redis存储中间字典表进行统计分析object T...原创 2019-11-19 15:22:00 · 402 阅读 · 0 评论 -
将数据灌入redis中
package toolsimport org.apache.spark.rdd.RDDimport org.apache.spark.sql.{DataFrame, SparkSession}import utils.GetJedisConn//将列车出厂时间灌入redis中object TrainTime2Redis { def main(args: Array[String...原创 2019-11-19 09:28:05 · 387 阅读 · 0 评论 -
使用redis爬虫时候去重后数据库中数据存不进去怎么办
打开redis,找到redis-cli打开,删除自己创建的数据库即可再次运行,数据库中就有数据了原创 2019-09-19 13:57:15 · 316 阅读 · 0 评论