
redis
A__17
这个作者很懒,什么都没留下…
展开
-
redis
高性能:纯内存访问:所有数据都是存放在内存中,是读写速度快的主要原因。 内存优化:支持多种编码方式。 单线程架构:避免了多线程之间资源竞争和线程切换的开销。 单线程的redis如何利用多核cpu机器:可以在同一台机器上部署多个redis节点来提高机器cpu的利用率。 IO复用技术:使用epoll作为I/O复用技术的实现。 由c语言实现,指令执行的速度相对更快一些。数据结构:redis中的数据结构和编码_A__17的博客-优快云博客高可用持久化:redis的持久化_A.原创 2018-05-11 20:58:14 · 811 阅读 · 0 评论 -
redis的持久化
redis的持久化: 目的:将内存中的数据保存到磁盘,在机器宕机或重启时可以保证数据不丢失。 持久化的方式: RDB(Redis DataBase) 1)概念:当符合一定条件时,redis会自动将内存中的数据进行快照并且存储到磁盘上,即在指定目录(默认是当前目录)下生成一个dump.rdb文件;redis启动后通过读取rdb文件,将数据再次载入到内存中。 ...原创 2018-06-12 23:25:53 · 312 阅读 · 0 评论 -
redis的主从复制
主从复制: 场景: 执行slaveof命令后,复制过程便开始启动。 执行laveof no one命令后,终止从节点与主节点复制。 数据同步方式: 全量复制:第一次复制时采用全量复制,当数据量较大时,会对主从节点和网络造成很大的开销。 部分复制:主节点补发因网络闪断等原因丢失的数据给从节点。 主从延迟: 概念:主从复制是异步的,故会存在主从延迟的问题,一般延迟时...原创 2020-03-27 19:33:58 · 360 阅读 · 0 评论 -
redis集群
Linux下Redis的安装 # redis是C语言开发的 yum install gcc-c++ # 解压 tar zxvf redis-3.0.0.tar.gz # 编译、安装 cd redis-3.0.0 make make install PREFIX=/data/cloud/redis/redis-3.0.0/ # 前端启动 cd /data/cloud...原创 2018-01-07 21:52:31 · 384 阅读 · 0 评论 -
redis中的数据结构和编码
基础知识:redis在内部使用redisObject结构体来定义存储的值对象。 每种类型都有至少两种内部编码,Redis会根据当前值的类型和长度来决定使用哪种编码实现。 编码类型转换在Redis写入数据时自动完成,这个转换过程是不可逆的,转换规则只能从小内存编码向大内存编码转换。源码:值对象redisObject:typedef struct redisObject { unsigned type:4; /* 对象类型 */ unsigned...原创 2020-03-27 00:41:29 · 744 阅读 · 0 评论 -
redis的缓存淘汰策略
缓存淘汰策略: 背景: 当Redis内存超出物理内存限制时,内存的数据会开始和磁盘产生频繁的交换(swap),导致Redis的性能急剧下降,造成redis服务的不可用。 为了限制最大使用内存,Redis提供了配置参数maxmemory来限制内存的最大使用容量。 当实际内存超出maxmemory时,redis根据不同的缓存淘汰策略(maxmemory-policy)来对内存进行回收。...原创 2020-03-27 23:12:24 · 629 阅读 · 0 评论 -
缓存场景问题处理
缓存雪崩 概念:大量的key使用相同的过期时间,导致大量的缓存在某一时刻集体失效,从而造成大量请求同时打到DB,造成DB瞬时压力太大导致雪崩。 解决:将key的过期时间分散开来。在原来的过期时间上加上一个随机值。 缓存击穿 概念:某个key在被高并发访问的时候,若该key的过期时间到了,则大量访问该key的请求就会直接打到DB上,造成DB的瞬时压力太大导致挂掉。 场景:某一个key...原创 2020-03-28 00:21:59 · 310 阅读 · 0 评论 -
常见的分布式锁
前言分布式锁一般有三种实现方式:数据库乐观锁 基于Redis的分布式锁 基于ZooKeeper的分布式锁实现方案一:代码中直接使用 setnx命令 +expire命令 + del命令 来实现[加锁]、[设置锁超时时间]、[解锁] 操作。存在的问题: 锁无法释放:当setnx命令执行成功,但是expire命令没有执行或执行失败(服务重启或网络问题)时,锁就会因为没有设置超时时间导致永远无法释放,造成死锁。 解决:使用lua脚本来保证 加锁和设置超时时间 这两个操作的原子..原创 2018-06-06 01:19:30 · 916 阅读 · 0 评论 -
Redisson分布式锁
创建redisson实例public class Redisson implements RedissonClient { /** * Create sync/async Redisson instance with default config * * @return Redisson instance */ public static RedissonClient create() { Config config = new原创 2019-07-08 21:44:39 · 808 阅读 · 0 评论 -
分布式锁的实现之 redis 篇
一、引言我们在系统中修改已有数据时,需要先读取,然后进行修改保存,此时很容易遇到并发问题。由于修改和保存不是原子操作,在并发场景下,部分对数据的操作可能会丢失。在单服务器系统我们常用本地锁来避免并发带来的问题,然而,当服务采用集群方式部署时,本地锁无法在多个服务器之间生效,这时候保证数据的一致性就需要分布式锁来实现。二、实现Redis 锁主要利用 Redis 的 setnx 命令。加锁命令:SETNX key value,当键不存在时,对键进行设置操作并返回成功,否则返回失败。KEY 是转载 2020-11-13 18:22:29 · 619 阅读 · 0 评论 -
redis常见的命令
redis的特性: 1)内存存储与持久化 2)5种数据类型 字符串: hash: 链表: 集合: 有序集合: 3)Redis的多数据库 1)Redis默认有16个数据库,数据库名分别为:db0、db1 ... db15,redis不支持自定义数据库名称 2)可以通过修改配置文件中的databases参数来修改默认数据库的个数 3)客户端连接到Redis服务...原创 2017-06-18 23:47:33 · 3057 阅读 · 0 评论 -
缓存与数据库的双写一致性
分布式缓存是现在很多分布式应用中必不可少的组件,但是用到了分布式缓存,就可能会涉及到缓存与数据库双存储双写,你只要是双写,就一定会有数据一致性的问题,那么你如何解决一致性问题?Cache Aside Pattern最经典的缓存+数据库读写的模式,就是 Cache Aside Pattern。读的时候,先读缓存,缓存没有的话,就读数据库,然后取出数据后放入缓存,同时返回响应。更新的时...转载 2020-03-16 22:06:22 · 414 阅读 · 0 评论 -
阿里云Redis开发规范
一、键值设计1. key名设计(1)【建议】: 可读性和可管理性以业务名(或数据库名)为前缀(防止key冲突),用冒号分隔,比如业务名:表名:idugc:video:1(2)【建议】:简洁性保证语义的前提下,控制key的长度,当key较多时,内存占用也不容忽视,例如:user:{uid}:friends:messages:{mid}简化为u:{uid}:fr:m:{mi...转载 2020-03-26 23:34:04 · 256 阅读 · 0 评论