redis
不求甚解误入此道
这个作者很懒,什么都没留下…
展开
-
redis和数据库的一致性问题笔记
原则:以数据库的数据为标准。分为实时一致性和最终一致性。缓存使用场景更新或者删除数据时 先操作redis还是先操作数据库 更新redis数据,是直接更新还是直接删除? 正常是直接删除del 方案1:先更新数据库,再删除缓存正常情况:全部成功或者第一步失败异常情况:删除redis失败,Redis旧数据解决方案:重试,再删除。可以将删除Redis失败的数据放入mq中,让mq再去删除一次,但是这样中的风险是增加了代码入侵性,不同业务增加不同的队列。也可以解析mysql bo..原创 2022-03-23 11:33:56 · 1244 阅读 · 0 评论 -
redis命令配置别名步骤
vim ~/.bashrc添加两行:alias redis='/usr/redis-6.0.6/src/redis-server /usr/redis-6.0.6/redis.conf'alias rcli='/usr/redis-6.0.6/src/redis-cli -p 16382'alias rclustercli='/usr/redis-6.0.6/src/redis-cli -h 192.168.19.103 -p 16382'编译生效:source ~/.bashr.原创 2022-03-23 09:01:38 · 1089 阅读 · 0 评论 -
Redis集群数据分片
一致性hash原理:https://www.cnblogs.com/lpfuture/p/5796398.html一致性hash的缺点:不可复用,java C python 需要重新编写代码。(可用代理的方案解决,如mycat)Redis Cluster虚拟槽:默认16384个虚拟槽(slot可以理解为长度为16384的数组)key的分片:对redis的key进行CRC16的计算,并且对16384进行取模,得到余数是多少就落在哪个槽(节点上面) 先hash后取模每个Redis G原创 2022-03-21 15:51:20 · 1674 阅读 · 0 评论 -
redis为什么这么快以及持久化策略?
存内存KV:快的最主要原因 请求单线程:请求是单线程,不存在线程的创建销毁,线程上下文切换,线程竞争等问题。 同步非阻塞i/o--多路复用到底什么是多路复用?I/O:网络I/O多路:多个TCP链接(Socket或者Channel)复用:复用一个或者多个线程多路复用:通过一种机制,一个线程能同时等待(监视)多个文件描述符,而这些文件描述符其中的任意一个进入就绪(状态),epoll函数就会返回。类似于高考,同学先在下面答题,老师在讲台上监考,其中一个同学答完卷准备交卷了,需要举手示意(已就原创 2022-03-18 14:56:14 · 707 阅读 · 0 评论 -
Redis缓存雪崩,缓存穿透和缓存击穿怎么解决?
缓存雪崩含义:redis中大量的热点数据,同时过期了(失效了)。是因为每个key都设置了相同的过去时间expire。如果这个时候并发访问量特别大,所有的请求都会落到数据库层面,给db造成特别大的压力。解决方式:设置过期时间的时候 增加一个 random随机数 热点数据不会变化,永远不会去db请求,可以永久不过期 预更新(定时扫描即将过期的数据 ) 。。。缓存穿透含义:查询一个数据,发现redis内存数据库没有,也就是缓存没有命中,于是向持久层数据库查询,发现也没有,...原创 2020-07-13 12:56:05 · 146 阅读 · 0 评论 -
redis5.0 主从配置
一主两从 准备 首先准备三个服务端,安装好redis.参考文档:https://www.cnblogs.com/zdd-java/p/10288734.html 配置redis.conf 文件,如下图daemonize yes 设置为后台启动bind 0.0.0.0 所有的ip都可以访问 如果是默认的127.0.0.1 只能本机访问保证这三台机器都能ping通配置好之后启动redis服务,./redis-cli 进入执行命令窗口 如图: 目标 1...原创 2020-07-10 11:33:08 · 999 阅读 · 0 评论 -
redis常用五种数据类型----zset类型的基本操作
Redis常见数据类型操作命令详情见http://doc.redisfans.com/ zset有序的集合(不允许元素重复) 基本操作 127.0.0.1:6379> zadd myzset 10 huangzhen 20 zhangsan 30 lisi 40 wangwu 50 zhaoliu //向有序集合中添加元素(integer) 5127.0.0.1:6379> zrange myzset 0 -1 withscores //根据分数正序排列.原创 2020-07-09 16:01:05 · 585 阅读 · 0 评论 -
redis常用五种数据类型----set类型的基本操作
set无序列表 基本操作 127.0.0.1:6379> sadd myset a b c d e f g //向myset集合中添加这些元素 返回数量(integer) 7127.0.0.1:6379> smembers myset //查看所有的元素1) "a"2) "b"3) "c"4) "d"5) "f"6) "g"7) "e"127.0.0.1:6379> scard myset //查看myset集合的元素总数(integer..原创 2020-07-09 14:53:13 · 558 阅读 · 0 评论 -
redis常用五种数据类型----list类型的基本操作
list 列表 有序的,可以重复,左边是列头。可以充当队列或者栈。 基本操作 127.0.0.1:6379> lpush queue a(integer) 1127.0.0.1:6379> lpush queue b c //在列表左边添加元素(integer) 3127.0.0.1:6379> lrange queue 0 -1 //查看列表中所有的元素1) "c"2) "b"3) "a"127.0.0.1:6379> rpush queu..原创 2020-07-09 13:53:01 · 241 阅读 · 0 评论 -
redis常用五种数据类型----hash的基本操作
HASH 哈希存储类型 基本操作 127.0.0.1:6379> hset user name huangzhne(integer) 1127.0.0.1:6379> hmset user age 11 addr chine tel 13455552222OK127.0.0.1:6379> hget user name"huangzhne"127.0.0.1:6379> hmget user age addr tel1) "11"2) "chine..原创 2020-07-09 11:06:32 · 214 阅读 · 0 评论 -
redis常用五种数据类型----String类型的基本操作
基本命令的使用参考: http://redisdoc.com/ String的存储类型 INT 整型 Float 浮点型 String 字符串127.0.0.1:6379> select 1OK127.0.0.1:6379[1]> set name hzOK127.0.0.1:6379[1]> get name"hz"127.0.0.1:6379[1]> flushdbOK127.0.0.1:6379[1]> keys *(e...原创 2020-07-09 10:53:48 · 360 阅读 · 0 评论 -
Lua脚本的基本使用
使用Lua脚本的好处 一次性发送多个命令,减少网络开销。(是多个reids命令的集合,不用每次都去建立连接) 原子性 (redis会将这个lua脚本认为是一个整体去执行,不会被打断,所以保证原子性) lua 文件复用 (命令非常多,可以放在一个文件中,这样其他的redis也可以调用,使其复用) 基本用法 127.0.0.1:6379> eval "return 'hello world'" 0"hello world"127.0.0.1:6379> k...原创 2020-07-09 09:28:50 · 6047 阅读 · 0 评论 -
redis 事务基本用法
基本用法127.0.0.1:6379> set hz 1000OK127.0.0.1:6379> set wangdan 1000OK127.0.0.1:6379> multiOK127.0.0.1:6379> decrby hz 100QUEUED127.0.0.1:6379> incrby wangdan 100QUEUED127.0.0.1:6379> exec1) (integer) 9002) (integer) 1100127.原创 2020-07-08 16:47:32 · 323 阅读 · 0 评论