最近在使用redis时,就想能不能用其实现消息队列?也在网上看了下其他小伙伴写的实现,结合自身业务实现了如下消息队列,希望对大家有用。 废话不多说,直接开撸。 1、为什么zset可以做消息队列? 首先我们来看下,设计消息队列需要考虑的需求:有序性,消息重复性,可靠性。 有序性:zset所有元素可以根据成员关联的score来进行从低到高的排序,例如,我们可以利用时间戳来进行排序消息重复性:在zset中每个元素都是唯一的,这也保证了消息的唯一性可靠性:zset会自动维护元素之间的顺序,在添加或删除元
2024-10-22redis过期删除 redis的键可以设置过期时间,但是并不是每个键一到过期时间就会立即删除,redis不可能给每个设置过期时间的key上添加一个定时器来监视是否过期,CPU根本承受不了如此多的定时线程 注意:我使用的版本是6.0.10,不同版本可能略有差别 删除策略 存在的删除策略: 定时删除 在设置键的同时创建定时器,过期时间到了就执行对键的删除,这种策略对内存使用率有优势,但是占用CPU资源太多定期删除 每隔特定时间对数据库进行一次扫描,检测并删除其中过期的键值对惰性删除 键值对过期暂时不
2024-10-22一、 准备工作 首先创建一张表: create table test( id int primary key, age int ) 二、 第一种方法----创建序列达到自增的效果 1. 创建序列 pgsql里,有种东西叫自增,很像mysql里的约束。建立一个自增的序列,每次需要获取自增主键时,调用一下这个序列就可以了。建立自增主键的序列的语法: CREATE SEQUENCE test_id_seq INCREMENT 1 MINVALUE 1 MAXVALUE 922337
2024-10-22redis主从连接不成功错误 安装完redis后,设置主从,在从服务器上运行 127.0.0.1:6379> slaveof 192.168.159.131 6379 slaveof <主服务器的IP> <主服务器redis的端口> 然后回到主服务器上,运行info replication 显示如下: 127.0.0.1:6379> info replication # Replication role:master connected_slaves:0 master_repl_offs
2024-10-22一、背景 在一次对数据进行统计的时候,需要对两张表进行关联,类似于这样的语句a left join b on a.id = b.id where b.name = xx。发现最终的结果和预期不一致,汇总之后的数据变少了。 一开始还比较费解,后面回过神来才发现,犯了一个低级的错误,就是在使用left join时过滤条件放到on后面还是where后面是有区别的,如果没有搞清楚他们的区别,连表汇总的结果就会变少或者变多。 二、探究 student表 classes表 2.1、统计每个班级中女生的数
2024-10-22?读完这篇文章里你能收获到 理解在 PostgreSQL 数据库中创建账号的重要性以及如何进行账号管理掌握在 PostgreSQL 中创建具有只读权限和读写权限的账号的步骤和方法学会使用 SQL 命令来创建账号、为账号分配适当的权限以及控制账号对数据库的访问级别了解如何确保账号密码的安全性 1. 账号管理的重要性 一个良好的账号管理策略对于数据库的安全和数据的完整性至关重要。通过为不同的用户设置适当的权限,可以确保他们只能访问他们需要的数据,并防止对敏感数据的意外或恶意访问 2. 创建只读账号
2024-10-22Redis常用的数据类型:String、Hash、List、Set、zSet 1.RedisTemplate常用方法 redisTemplate.hasKey(key); //判断是否有key所对应的值,有则返回true,没有则返回false redisTemplate.opsForValue().get(key); //有则取出key值所对应的值 redisTemplate.delete(key); //删除单个key值 redisTemplate.delete(keys)
2024-10-22引言 本文将介绍如何使用Redisson实现锁的默认失效时间。Redisson是一个基于Redis的Java驻留库,提供了许多分布式对象和服务,包括分布式锁。在分布式系统中,锁是一种常用的同步机制,用于控制多个线程或进程对共享资源的访问。使用锁可以确保在同一时间只有一个线程可以访问共享资源,从而避免竞态条件和数据不一致性。 流程 下面是使用Redisson实现锁的默认失效时间的步骤: 代码实现 步骤一:创建Redisson客户端 首先,我们需要创建Redisson客户端,用于连接Redis服务
2024-10-22安装redis指定版本 composer require easyswoole/redis:^1.3 redis配置,dev.php <?php use EasySwoole\Log\LoggerInterface; return [ 'SERVER_NAME' => "EasySwoole", 'MAIN_SERVER' => [ 'LISTEN_ADDRESS' => '0.0.0.0', 'PORT' => 9503,
2024-10-221. 修改表字段数据类型 当需要修改表字段数据类型时,可以使用以下命令: ALTER TABLE table_name ALTER COLUMN column_name SET DATA TYPE new_data_type; 其中,table_name 为要修改的表名,column_name 为要修改的字段名,new_data_type 为新设定的数据类型。 例如,将表 students 中的字段 age 从整数类型修改为浮点型: ALTER TABLE students ALTER CO
2024-10-22