【redis进阶5】缓存雪崩+击穿+穿透

2021-09-07
阅读 1 分钟
2.3k
缓存雪崩+击穿+穿透缓存雪崩目前电商首页以及热点数据都会去做缓存 ,一般缓存都是定时任务去刷新,或者是查不到之后去更新的,定时任务刷新就有一个问题:缓存雪崩。缓存雪崩是指在大QPS时,缓存刚好失效或更新,大量请求打到DB上,导致DB扛不住挂掉。解决方案错开KEY的失效时间setRedis(Key,value,time + Math.rand...

【redis进阶(4)】限流策略

2021-09-06
阅读 7 分钟
1.9k
除了控制流量,限流还有一个应用目的是用于控制用户行为,避免垃圾请求。比如在 UGC 社区,用户的发帖、回复、点赞等行为都要严格受控,一般要严格限定某行为在规定时间内允许的次数,超过了次数那就是非法行为。对非法行为,业务必须规定适当的惩处策略。

【redis进阶(3)】大数据量精度去重

2021-09-02
阅读 3 分钟
2.6k
布隆过滤器可以理解为一个不怎么精确的 set 结构,当你使用它的 contains 方法判断某个对象是否存在时,它可能会误判。但是布隆过滤器也不是特别不精确,只要参数设置的合理,它的精确度可以控制的相对足够精确,只会有小小的误判概率。一般用于大数据量的去重。

【redis进阶(2)】大数据量模糊计数

2021-09-01
阅读 1 分钟
2.2k
HyperLogLog 提供不精确的去重计数方案,用于记录大数据量的计数(如,网站的uv),虽然不精确但是也不是非常不精确,标准误差是 0.81%。

【docker专题(8)】单节点最佳实践

2019-08-11
阅读 3 分钟
1.9k
命令快捷化 {代码...} [info] 具体的其他命令可以扩展源文件bashrc_docker laradock 这里以php开发环境为例,大而全的有laradock 官网:[链接] 基本上涵盖了后端开发中需要使用的软件 [链接] 这里以安装lnmp套件为例 {代码...} 具体的挂载目录可以查看docker-compose.yml 版本切换 以mysql为例 {代码...} 多版本共存 以m...

【docker专题(7)】docker-compose

2019-08-10
阅读 3 分钟
2.1k
Docker Compose 是 Docker 容器进行编排的工具,定义和运行多容器的应用,可以一条命令启动多个容器。 使用Compose 基本上分为三步: Dockerfile 定义应用的运行环境 docker-compose.yml 定义组成应用的各服务 docker-compose up 启动整个应用 安装Compose Compose网站:[链接] {代码...} 编写示例 {代码...} 变量来自同...

【docker专题(6)】Dockerfile

2019-08-09
阅读 2 分钟
1.3k
Dockerfile是docker构建镜像的基础,也是docker区别于其他容器的重要特征,正是有了Dockerfile,docker的自动化和可移植性才成为可能。

【docker专题(5)】安装Lnmp(多PHP版本与宝塔)

2019-08-08
阅读 5 分钟
2.7k
[info] 1. 挂载的目录可以用nsenter命令进入容器中查看,注意,不要用docker attach。 甚至还可以用 docker exec -i -t container_name /bin/bash 要理解映射目录,宿主目录只是映射到容器目录,要站在容器目录的角度来做相应的配置! 注意,php的挂载目录要与nginx的挂载目录要一致,否则会出现File not found.错误!

【docker专题(4)】操作示例

2019-08-07
阅读 2 分钟
1.2k
[info] 1. 容器不是一个虚拟机,因为他就是一个进程,如果我们退出,这个进程就退出了 如果我们执行创建容器的时候,里面没有我们指定的镜像,那么他会从dockerhub上进行下载然后在启动

【docker专题(3)】镜像和仓库

2019-07-31
阅读 3 分钟
1.3k
[TOC] 容器是独立运行的一个或一组应用。Docker容器通过Docker镜像来创建。容器与镜像的关系类似于面向对象编程中的对象与类。 [info] 以下命令的容器名称都可以换成容器的id 操作 {代码...} 信息 {代码...} 数据卷与数据卷容器 删除容器后数据还存在 {代码...} 如果容器之间需要共享一些持续更新的数据 {代码...} 导出...

【docker专题(2)】容器

2019-07-30
阅读 3 分钟
1.3k
[TOC] 容器是独立运行的一个或一组应用。Docker容器通过Docker镜像来创建。容器与镜像的关系类似于面向对象编程中的对象与类。 [info] 以下命令的容器名称都可以换成容器的id 操作 {代码...} 信息 {代码...} 数据卷与数据卷容器 删除容器后数据还存在 {代码...} 如果容器之间需要共享一些持续更新的数据 {代码...} 导出...

【docker专题(1)】安装启动卸载

2019-07-29
阅读 1 分钟
1.3k
安装(以centos为例) Docker 要求 CentOS 系统的内核版本高于 3.10,通过uname -r命令查看你当前的内核版本 {代码...} 使用 yum 安装(CentOS 7下) {代码...} 使用脚本安装 {代码...} 卸载 {代码...} 启动 {代码...} [info] 我们启动docker的时候,docker会帮我们创建一个docker 0的网桥。可以用ifconfig查看

【redis专题(16)】管道pipline

2019-07-18
阅读 1 分钟
1.4k
Redis 管道技术可以在服务端未响应时,客户端可以继续向服务端发送请求,并最终一次性读取所有服务端的响应。也就是多次IO操作合并成一次IO操作。Redis 管道 (Pipeline) 本身并不是 Redis 服务器直接提供的技术,这个技术本质上是由客户端提供的,跟服务器没有什么直接的关系。

【redis专题(15)】Redis性能测试工具Redis-benchmark

2019-07-17
阅读 3 分钟
2k
指令说明 {代码...} 示例 {代码...} 测试信息 {代码...} 结果(部分): ====== SET ======对集合写入测试 {代码...} 其它测试 {代码...}

【redis专题(14)】持久化配置

2019-07-16
阅读 2 分钟
1k
Redis的持久化有2种方式:快照rdb 和 日志aof由于rdb是在某个时间点来备份的,直接备份二进制映像文件,恢复速度快。但是由于是在时间点备份的,在备份之前进程突然被杀掉就导致上个备份点到这个备份点之间的数据都丢失了;所以要结合Aof日志来一起备份,再加上一个主从配置就比较完美了;

【redis专题(13)】redis运维相关命令

2019-07-15
阅读 2 分钟
1.5k
常用运维命令 显示服务器时间 time {代码...} 查看当前数据库的key的数量 dbsize {代码...} 后台进程重写aof bgrewriteaof {代码...} 保存rdb快照 bgsave(后台保存) save {代码...} 上次保存的时间 lastsave 清空数据 {代码...} 服务器关闭 Showdown [save/nosave] 查看redis服务器的信息,性能调优 Info [Replication/CP...

【redis专题(12)】正确优雅的在ThinkPHP5中使用redis

2019-07-14
阅读 3 分钟
6.7k
TP5的redis驱动在项目中使用遇到的问题 缓存的Key前缀取的是config中配置的,没有单独管理。 不能使用redis一些本身高级命令,比如sadd等。 一些常用的操作可以再次封装,比如分布式锁等。 key的管理类 key要统一管理起来,便于后续的阅读以及扩展 {代码...} libsRedis {代码...} 服务提供者配置 app/provider.php {代码...

【redis专题(11)】KEY设计原则与技巧

2019-07-12
阅读 3 分钟
3.3k
表名:主键值:列名 在所有主键名都是id的情况下(其实我个人不喜欢这种情况,比如user表,它的主键名就应该是user_id,而不是id,这样在表与表之间关联的时候一目了然)

【redis专题(10)】命令语法介绍之GEO

2019-07-11
阅读 3 分钟
1.6k
移动互联网时代LBS应用越来越多,交友软件中附近的小姐姐、外卖软件中附近的美食店铺、打车软件附近的车辆等等,那这种附近各种形形色色的XX是如何实现的呢

【redis专题(9)】事务

2019-07-09
阅读 2 分钟
1.4k
rollback与discard的区别:如果已经成功执行了2条语句, 第3条语句出错Rollback后,前2条的语句影响消失。discard只是取消队列,并非回滚。要用在exec前面;

【redis专题(8)】命令语法介绍之通用KEY

2019-07-08
阅读 6 分钟
1.7k
基础命令 {代码...} 数据库选择 默认有16[0到15]个数据库,默认自动选择0号数据库 {代码...} 移动key到num服务器 {代码...} 删除给定的一个或多个 key 。 {代码...} 检查给定 key 是否存在。 {代码...} 整型值 设置key的生命周期 单位秒数 如果为p(pexpire)单位就变为毫秒 {代码...} 指定key在UNIX 时间戳(unix timestamp...

【redis专题(7)】命令语法介绍之Pub/Sub

2019-07-07
阅读 2 分钟
2k
Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息。主要的目的是解耦消息发布者和消息订阅者之间的耦合,这点和设计模式中的观察者模式比较相似。pub /sub不仅仅解决发布者和订阅者直接代码级别耦合也解决两者在物理部署上的耦合。redis作为一个pub/sub server,在订阅者和发布者...

【redis专题(6)】命令语法介绍之hash

2019-07-05
阅读 1 分钟
1.1k
作用: 将哈希表 key 中的域 field 的值设置为 value ,当且仅当域 field 不存在。若域 field 已经存在,该操作无效。如果 key 不存在,一个新哈希表被创建并执行 HSETNX 命令。

【redis进阶(1)】redis的Lua脚本控制(原子性)

2019-07-05
阅读 6 分钟
12.7k
[toc] 为什么要用lua 减少网络开销:本来5次网络请求的操作,可以用一个请求完成,原先5次请求的逻辑放在redis服务器上完成。使用脚本,减少了网络往返时延。 原子操作:Redis会将整个脚本作为一个整体执行,中间不会被其他进程或者进程的命令插入。(最重要) 复用:客户端发送的脚本会永久存储在Redis中,意味着其他客...

【redis专题(5)】命令语法介绍之sets

2019-07-03
阅读 1 分钟
1.6k
关于 redis的无序集合有三个特点: 无序性, 确定性(描述准确) , 唯一性; 有点类似于数据容器; 增 {代码...} 作用: 往集合key中增加元素注意: 集合具有唯一性,已经存在就放不进; 删 {代码...} 作用: 删除集合中值为 value1 value2的元素返回值: 忽略不存在的元素后,真正删除掉的元素的个数 {代码...} 作用: 返回并删除...

【redis专题(3)】命令语法介绍之list

2019-07-02
阅读 2 分钟
1.6k
通过链表结构可以模仿队列结构与堆栈结构;关于队列结构和堆栈结构可以查看 【SPL标准库专题(6)】Datastructures:SplStack & SplQueue 增 {代码...} 作用: 把值插入到链表头部 {代码...} {代码...} 作用: 把值插入到链接尾部 删 {代码...} 作用: 返回并删除链表尾元素 {代码...} 作用: 返回并删除链表头元素 {代码....

【redis专题(4)】命令语法介绍之sorted_set

2019-07-01
阅读 3 分钟
1.5k
在redis的3.02版本还可以为zadd增加一些附加参数 ZADD key [NX|XX] [CH] [INCR] score member

【redis专题(2)】命令语法介绍之string

2019-06-30
阅读 4 分钟
1.5k
REDIS有6大数据结构:string,link,sortedset,sets,hash,Geo。 这6个结构我将用6篇文章来记录各自是怎么用的,然后再用一篇文章来说一下各自的应用场景;

【redis专题(1)】安装与启动

2019-06-29
阅读 2 分钟
1.7k
REmote DIctionary Server(Redis) 是一个由Salvatore Sanfilippo(redis之父)写的key-value存储系统。Redis提供了一些丰富的数据结构,包括 lists, sets, ordered sets 以及 hashes还有和Memcached一样的strings结构.Redis当然还包括了对这些数据结构的丰富操作。

【Mysql进阶技巧(2)】利用mysql生成唯一序号

2019-06-28
阅读 1 分钟
4k
在数据库分表或者程序自己需要唯一id的情况下,我们需要一个生成唯一id的方案。可以编写一个综合时间和某些特征生成唯一id的程序,也可以考虑使用数据库里自增id的特性来实现这个需求,下面举个mysql的例子。首先创建一个专门生成id的表,其中id字段是主键,replace_key字段为唯一键。