redis
文章平均质量分 72
伟娃娃
java软件开发
展开
-
Redis编程的规范与部分优化建议
为了使reids配置更优,在使用redis的时候需要注意一些规范,首先要注意,redis和任何cache都不适合写操作比较多的场景,只时候读多写少的场景。1. 定义key的时候,加上前缀,防止不同业务的key冲突trade:order:cloth:Tshirt:10011不要再key里面加特殊字符,尽量的让key简洁,不要让key占太多空间user:{uid}:friends:messages:{mid} ==> u:{uid}:fri:msg:{mid}不要大量使用的bigkey原创 2021-04-05 12:03:48 · 123 阅读 · 0 评论 -
企业级架构下Redis存在的一些问题和解决方案
在企业级的互联网项目中,通常使用的是多级的缓存架构,如下的一个架构例子:如上的这个架构存在这一些需要注意的问题, 这些问题也是通常使用缓存架构时都会遇到的问题,下面介绍了一些常见问题和解决方案:缓存穿透缓存存在的目的是为了保护后端, 让大量的访问请求都直接从缓存层返回数据,不用打到存储层的数据库里面去。缓存穿透就是大量的访问没有被缓存层有效的拦截,都直接访问到数据层去了。通常导致缓存穿透的原因有:有人恶意的攻击,使用些不存在的产品代号,进行大量的访问,造成大量空命中。 自身业务逻辑原创 2021-04-05 10:59:35 · 288 阅读 · 1 评论 -
Redis实现分布式锁Redisson
自己来写一套redis 分布式锁的的逻辑,如下需要考虑的的问题很多, 很难把每个细节都考虑到。1. 必须把delete key放到finally里面,因为中间出现exception,这个锁就被永远卡住了2. 必须给一个锁的最大占用时间,万一没有执行到delete key程序挂了,这个锁就被永远卡住了3. 给每个锁一个id,当一段代码执行时间比较长,超过了最大占用时间,锁被释放了。后面一个程序进来到所里面,这时候第一个程序执行完成,走到delete lock。4. 锁续命,用一个守护线程一直来检查当原创 2021-04-02 18:16:42 · 154 阅读 · 0 评论 -
Redis底层设计原理
Redis是C语言实现的Redis的Key和Value都是Sting,C语言中 char data[]="Allen"Redis在C语言中自定义了一个数据结构来存储String,SDSSDS = Simple dynamic string 简单动态字符串特点:1. 二进制安全的数据结构2. 提供了热潮预分配机制,避免了频繁的内存分配3. 兼容C语言的函数库...原创 2021-03-16 22:46:06 · 266 阅读 · 1 评论 -
使用Jmeter模拟1秒发送100个请求
在分布式系统中,使用syncnized是没有用的,无法达到锁的效果,如下例子:1. 安装并配置后一个nginx服务器,nginx的配置文件如下,下面配置的server是我IDEA启动的服务对应的机器的ip,我通过修改yml的端口号,在IDEA中启动了2个服务8080和8081。这里用到了nginx的负载均衡功能。http { include mime.types; default_type application/octet-stream; sendfile原创 2021-03-16 22:45:19 · 5073 阅读 · 0 评论 -
Redis集群扩容与下线步骤
当双手十一来临时,需要临时增加Redis集群的数量来缓解压力在集群中增加Redis节点步骤如下:1. 使用链接集群,并通过cluster nodes来查看当前集群的信息[allen@localhost ~]$ cd packages/redis-5.0.3/[allen@localhost redis-5.0.3]$ src/redis-cli -h 192.168.0.103 -p 8003 -a allenWarning: Using a password with '-a' or '原创 2021-01-25 22:42:17 · 776 阅读 · 0 评论 -
Redis 集群的原理分析
Redis 集群的原理分析Redis将所有数据划分问16384个槽位slots,每个节点负责一部分槽位,槽位的信息存在于每个节点中。当Redis Cluster的客户端来链接集群时,会得到一份集群的槽位信息,这样当客户端需要查找存储每个值时,就直接去链接对应的节点就行了,同时如果槽位信息改变了,存在客户端与服务器不一致情况,需要纠正机制来实现校验和调整。槽位定位算法key的hashcode%16835跳转重定位当客户端向一个,错误的节点发出了指令,节点发现所访问的槽位不归自己所有时,原创 2021-01-24 21:50:08 · 164 阅读 · 0 评论 -
Redis Java客户端-通过原生jedis和SpringBoot操作Redis集群
Redis java客户端操作集群1. 使用Jedis java原生操作redis集群public class RedisCluster { public static void main(String[] args) { JedisPoolConfig jedisPoolConfig = new JedisPoolConfig(); jedisPoolConfig.setMaxTotal(20); jedisPoolConfig.setMa原创 2021-01-21 20:37:24 · 309 阅读 · 1 评论 -
Redis删除并重新创建一个集群
发现自己搭建的集群有问题, 如何删除现有集群并重写搭建:1. 登录每台机器查看启动的redis服务,然后停掉所以的redis服务ps -ef| grep rediskill 12455 124602. 登录每台机器,删除上个集群的相关文件[allen@localhost redis-5.0.3]$ cd 8001[allen@localhost 8001]$ ls8001.log appendonly.aof dump.rdb nodes-8001.conf[allen@l原创 2021-01-20 20:52:23 · 3015 阅读 · 8 评论 -
Redis 集群架构的搭建基于5.03
哨兵架构存在的一些缺陷:1. 瞬断问题,哨兵架构中,当主节点挂断后需要选举,然后切换,中间有几秒到几十秒的服务暂停时间2. 高并发受限问题,哨兵对外只有一个节点提供写服务,一台就几w的QPS。3. 单个节点的内存不能设置过大,也就10G左右,否者导致持久化文件过大,影响数据恢复和主从同步效率。Redis集群架构可以解决上面提到的问题,redis集群是有多个主从节点小群组成的分布式服务器集群特点: 复制,高可用,分片特性,没有中心节点,可水平扩容。官网称可以支持上万个节点(推荐不超过1原创 2021-01-19 22:12:21 · 1046 阅读 · 4 评论 -
Redis哨兵架构的搭建测试实例
主从架构,如果主节点挂了,需要运维人员手动处理,重写配置主节点。哨兵架构可以可以解决这个问题, 当主节点挂了之后,哨兵会自动的选举一个节点当作主节点。sentinel哨兵是图书的redis服务,不提供读写服务,主要用过来监控redis实例节点。哨兵架构下client端第一次从哨兵找出redis主节点,后续就支持访问redis的主节点,不会每次都通过sentinel代理访问reids主节点,当redis主节点发送变化,哨兵会第一时间感知到,并且将新的redis主节点通知给client端,redis原创 2021-01-13 22:14:29 · 445 阅读 · 1 评论 -
Redis的批处理命令-管道和Lua脚本
redis 管道,一次性的把多条命令发送到服务器端,节省网络开销管道没有考虑事务和一致性的问题,如果pipeline有10条命令,其中地2-4条没有成功,其他的命令也会提交,只是把结果返回回来。public class RedisPipeLine { public static void main(String[] args) { JedisPoolConfig jedisPoolConfig = new JedisPoolConfig(); jedisPo原创 2021-01-11 21:59:35 · 671 阅读 · 0 评论 -
Redis在java中的第一个Helloworld
第一步 - 加入Maven dependency: <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>3.1.0</version> </dependency>第二步 - 在java中的使用:JedisPoolCon.原创 2021-01-11 08:46:05 · 150 阅读 · 0 评论 -
Redis的主从架构搭建
一个主节点,一到多个从节点,主节点执行写操作,从节点进行数据备份。也可以让从节点提供写读操作,减轻主节点的压力。Redis主从架构搭建1. 从src/redis.conf重新复制一份配置文件cp redis.conf redis.conf_12. 修改新建的文件redis.conf_1,配置如下信息port 6380 #修改端口号,代表本机另外一台机器pidfile /var/run/redis_6380.pid原创 2021-01-07 20:48:03 · 165 阅读 · 0 评论 -
redis持久化机制-RDB-AOF-混合持久化
RDB方式的持久化将redis内存直接把snapshot保存到文件系统。将整个内存数据存放到dump.rdb file 中。配置如下:[allen@localhost src]$ cd redis-5.0.3[allen@localhost redis-5.0.3]$ vi redis.conf配置解释:在60秒之内有10000条redis写命令900秒内写一次300秒内写10次持久化配置可以配多个策略,只要满足其中一个条件就会触发一次持久化如下save使用,执行sav.原创 2021-01-06 21:00:28 · 1229 阅读 · 0 评论 -
redis安装,启动,5种数据结构的基本使用
一. 安装redis1.打开需要下载redis的目录mkdir packagescd packages/2. 下载redis安装包wget http://download.redis.io/releases/redis-5.0.3.tar.gzls -lrt3. 解压安装包tar xzfv redis-5.0.3.tar.gzcd redis-5.0.3/ls -lrt4. 安装makepwdls -lrt二.启动redis1. 启动redis服务端src/redi..原创 2021-01-02 11:23:52 · 125 阅读 · 0 评论