![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
redis
Iron_Huang
一只很嬲的野生白化程序猿
展开
-
go-redis先读后写并发竞争key的解决方案
redis本身是一个单线程的数据库,本身并不存在内部的竞争关系,但是在我们使用go-redis等中间件并发访问时会出现key的竞争问题。 如下代码,当需要“test"key的值<=1时才需要对其incr;我们需要先读取该值,再对该值进行判断后确定是否需要incr; 如果不对并发进行处理,会造成多个协程读取到<=1的值,进而重复incr造成数据错误: var wg sync.WaitGroup func main() { client := redis.NewClient(&redis原创 2020-09-13 13:56:27 · 1547 阅读 · 0 评论 -
gorm通过callback实时更新缓存数据
title: “Gorm通过callback实时更新缓存数据” date: 2020-07-21T10:36:50+08:00 draft: true categories: golang tags: featured_image: 在一个我们需要更新缓存数据的场景下时,有许多选择的余地,django中很多时候使用celery定时任务,但是单用celery定时任务也许无法保证数据的实时更新。 比如django框架中包含了很多signal,单独使用signal的话并没有什么性能上的优势,通过结合一些类.原创 2020-07-21 12:21:20 · 3345 阅读 · 0 评论 -
尝试通过gin+redis为hugo博客添加频率限制反爬
最近无意中查看nginx发现好多疑似爬虫ip,遂临时起意能不能搞个频率限制。 以下用我使用的刘志超先生开发的Leaveit主题为例 一. 配置文件更改baseURL // hugo config.toml baseURL = "/public" avatar = "/public/images/me/avatar.jpeg" Wechat = "/public/images/me/wechat.png" 二. 更改部分模板html中的href // 更改themes-leaveit-layouts原创 2020-07-19 02:53:43 · 557 阅读 · 0 评论 -
在单机上通过docker搭建redis集群试验
一 Redis集群搭建 1.1 运行redis镜像 [root@centos-linux docker]# docker run -id --name=redis-6379 -p 6379:6379 redis [root@centos-linux docker]# docker run -id --name=redis-6380 -p 6380:6379 redis [root@centos-linux docker]# docker run -id --name=redis-6381 -p 6381原创 2020-07-10 12:21:00 · 104 阅读 · 0 评论 -
白话版Redis的缓存穿透、击穿、雪崩与常用解决方案
一 缓存穿透 #描述: 缓存穿透是指缓存和数据库中都没有的数据,而用户不断发起请求,如发起为id为“-1”的数据或id为特别大不存在的数据。这时的用户很可能是攻击者,攻击会导致数据库压力过大。 #解决方案: 1 接口层增加校验,如用户鉴权校验,id做基础校验,id<=0的直接拦截; 2 从缓存取不到的数据,在数据库中也没有取到,这时也可以将key-value对写为key-null,缓存有效时间可以设置短点,如30秒(设置太长会导致正常情况也没法使用)。这样可以防止攻击用户反复用同一个id暴力攻击 3原创 2020-07-10 12:13:21 · 76 阅读 · 0 评论