XieYunHu


  • 首页

  • 关于

  • 分类

  • 归档

  • 搜索

理解学习Redis分布式锁,面对秒杀等场景

发表于 2023-04-29 | 更新于: 2026-04-29
字数统计: 2.1k | 阅读时长 ≈ 8

简介:

Redis(Remote Dictionary Server)是一个开源的内存数据结构存储系统,可以用作数据库、缓存和消息中间件。

🚀 核心特点

1. 内存存储,超快性能

  • 数据存储在内存中,读写速度极快(10万+ QPS)
  • 支持持久化到磁盘,保证数据不丢失

2. 丰富的数据结构

  • String:字符串(最常用)
  • Hash:哈希表(适合存储对象)
  • List:列表(支持队列操作)
  • Set:集合(去重、交并差运算)
  • Sorted Set:有序集合(带权重排序)
  • Stream:消息流(5.0版本新增)

3. 多功能用途

  • 缓存:减轻数据库压力,提升响应速度
  • 会话存储:存储用户登录状态
  • 排行榜:利用Sorted Set实现
  • 消息队列:List或Stream实现异步处理
  • 分布式锁:实现系统间互斥操作

💡 实际应用场景

缓存示例(PHP):

1
2
3
4
5
// 缓存用户信息
$redis->setex('user:123', 3600, json_encode($userInfo));

// 读取缓存
$userInfo = $redis->get('user:123');

分布式锁:

1
2
3
4
5
6
7
8
// 获取锁
$lockKey = 'order:lock:1001';
if ($redis->set($lockKey, 'locked', ['nx', 'ex' => 30])) {
// 执行业务逻辑
// ...
// 释放锁
$redis->del($lockKey);
}

🔧 为什么开发者喜欢Redis?

  • 简单易用:命令直观,学习成本低
  • 高性能:单机就能支撑高并发
  • 可靠性:支持主从复制、集群模式
  • 灵活性:多种数据结构适应不同场景

对于您这样的PHP开发者来说,Redis几乎是标配工具,特别是在处理高并发、缓存优化、会话管理等场景时非常有用。

阅读全文 »

unison的安装及基本使用,负载均衡(二)

发表于 2022-05-13 | 更新于: 2022-05-13 | 分类于 学习
字数统计: 888 | 阅读时长 ≈ 4

前言:

Unison是Windows、Linux以及其他Unix平台下都可以使用的文件同步工具,它能使两个文件夹(本地或网络上的)保持内容的一致。Unison拥有与其它一些同步工具或文件系统的相同的特性,但也有自身的特点:
a.跨平台使用;
b.对内核和用户权限没有特别要求;
c.Unison是双向的,它能自动处理两分拷贝中更新没有冲突的部分,有冲突的部分将会显示出来让用户选择更新策略;
d.只要是能连通的两台主机,就可以运行unison,可以直接使用socket连接或安全的ssh连接方式,对带宽的要求不高,使用类似rsync的压缩传输协议。

示例环境:两台centos7的环境
vm1 60.30.30.30
vm2 30.60.60.60

阅读全文 »

inotifywait的安装及基本使用,负载均衡(一)

发表于 2022-05-13 | 更新于: 2022-05-13 | 分类于 学习
字数统计: 1.2k | 阅读时长 ≈ 4

前言:

Inotify 一种强大的、细粒度的、异步文件系统监控机制,它满足各种各样的文件监控需要,可以监控文件系统的访问属性、读写属性、权限属性、删除创建、移动等操作,也就是可以监控文件发生的一切变化。

inotify-tools 是一个C库和一组命令行的工作,提供Linux下inotify的简单接口。inotify-tools安装后会得到inotifywait和inotifywatch这两条命令:

inotifywait命令 可以用来收集有关文件访问信息,Linux发行版一般没有包括这个命令,需要安装inotify-tools,这个命令还需要将inotify支持编译入Linux内核,好在大多数Linux发行版都在内核中启用了inotify。
inotifywatch命令 用于收集关于被监视的文件系统的统计数据,包括每个 inotify 事件发生多少次。

划重点————————————————————————————————————————————————————————————

使用场景,负载均衡,我这里是用的阿里的负载,所以需要用到unison+inotifywait实现双向同步文件

单向同步可使用:rsync+inotify 用于手工恢复的场景

阅读全文 »

Php保利威直播示例

发表于 2021-12-30 | 更新于: 2022-05-13 | 分类于 学习
字数统计: 533 | 阅读时长 ≈ 2

前言:

​ 参考地址

image-20210329094209871

阅读全文 »

Php保利威点播示例

发表于 2021-12-30 | 更新于: 2022-05-13 | 分类于 学习
字数统计: 533 | 阅读时长 ≈ 2

前言:

​ 参考地址

image-20210329094209871

阅读全文 »

swoole

发表于 2021-12-30 | 更新于: 2022-04-01 | 分类于 学习
字数统计: 238 | 阅读时长 ≈ 1

什么是swoole:

​ 参考地址

​ swoole是php的一个扩展库。

​ swoole是php的异步,并行,高性能网络通信引擎,使用纯c语言编写,提供了php语言的异步多线程服务器。

​ 异步tcp/udp网络客户端,异步mysql,异步redis数据连接池,asynctask,消息队列,毫秒定时器,异步文件读写,异步dns查询。

​ swoole内置了http/websocket(服务器端/客户端),http2.0服务器端。

阅读全文 »

PHP循环取出字符串的首字母

发表于 2021-11-19 | 更新于: 2023-02-09 | 分类于 学习
字数统计: 502 | 阅读时长 ≈ 2

前言:

使用场景:地区入库字母排序,姓名入库字母排序。

阅读全文 »

获取客户端操作系统类型,浏览器信息,服务器基本信息

发表于 2021-11-19 | 更新于: 2023-02-09 | 分类于 学习
字数统计: 989 | 阅读时长 ≈ 5

前言:

PHP获取客户端浏览器以及操作系统信息是通过客户端浏览器传递过来的useragent信息进行判定的,因为客户端useragent信息可以伪造,所以通过PHP获取到的浏览器以及操作系统信息只能作为参考,如下代码还有待丰富的地方。

PHP中可以直接通过读取超全局数组$_SERVER[‘HTTP_USER_AGENT’]进行正则匹配即可获取到相应的浏览和操作系统信息。说白了,就是对php的pcre兼容的正则表达式的理解。

阅读全文 »

校验身份证号是否合法(包含港澳台)

发表于 2021-11-19 | 更新于: 2023-02-09 | 分类于 学习
字数统计: 1.3k | 阅读时长 ≈ 6

前言:

一代身份证与二代身份证的区别

一代身份证是15位,二代身份证是18位;
一代身份证出生年月日采用YYMMDD格式,二代身份证出生年月日采用YYYYMMDD格式;
一代身份证无校验码,二代身份证有校验码。

二代身份证号码的编码规则

身份证号码前六位:表示编码对象常住户口所在县(市、镇、区)的行政区划代码。1-2位省、自治区、直辖市代码; 3-4位地级市、盟、自治州代码; 5-6位县、县级市、区代码;
身份证号码第七位到第十四位:表示编码对象出生的年、月、日,其中年份用四位数字表示年、月、日之间不用分隔符,采用YYYYMMDD格式;
身份证号码第十五位到十七位:地址码所标识的区域范围内,对同年、月、日出生的人员编定的顺序号。顺序码的奇数分配给男性,偶数分配给女性,即第17位奇数表示男性,偶数表示女性;
身份证号码最后一位:根据前面十七位数字码,按照ISO 7064:1983.MOD 11-2校验码计算出来的检验码。如果某人的尾号是0-9,都不会出现X,但如果尾号是10,那么就得用X来代替,X是罗马数字的10,用X来代替10,可以保证公民的身份证符合国家标准;

二代身份证校验规则(最后一位校验码的计算方法)

首先将前面的身份证号码17位数分别乘以不同的系数。从第一位到第十七位的系数分别为:7-9-10-5-8-4-2-1-6-3-7-9-10-5-8-4-2
接下来将这17位数字和系数相乘的结果相加,然后用加出来和除以11,看余数,余数只可能有0-1-2-3-4-5-6-7-8-9-10这11个数字。其分别对应的最后一位身份证的号码为1-0-X -9-8-7-6-5-4-3-2

阅读全文 »

linux编译安装redis,php_redis扩展教程

发表于 2021-03-12 | 更新于: 2023-02-09 | 分类于 学习
字数统计: 384 | 阅读时长 ≈ 1

前言:

官方解释:Redis是一种开放源代码(BSD许可)的内存中数据结构存储,用作数据库,缓存和消息代理。Redis提供数据结构,例如字符串,哈希,列表,集合,带范围查询的排序集合,位图,超日志,地理空间索引和流。Redis具有内置的复制,Lua脚本,LRU驱逐,事务和不同级别的磁盘持久性,并通过Redis Sentinel和Redis Cluster自动分区提供了高可用性。

阅读全文 »
12…4下一页
目前共计 17 个标签
crm github hexo inotifywait javascript linux mysql nginx php swoole typecho unblockneteasemusic unison windows 设计模式 负载均衡 软件
一个姓谢的糟老头子

一个姓谢的糟老头子

37 日志
3 分类
E-Mail Music
© 2026 一个姓谢的糟老头子 津ICP备18007229号-1