redis
钚该钚想
这个作者很懒,什么都没留下…
展开
-
go 连接redis
package main import ( "fmt" "github.com/garyburd/redigo/redis" ) func main() { c, err := redis.Dial("tcp", "localhost:6379") if err != nil { fmt.Println("conn redis failed,", err) return } c.Do("set","gin_demo","test_gin", "ex",10*60) fmt.Pri原创 2021-04-06 14:38:47 · 102 阅读 · 0 评论 -
redis 使用setnx实现锁
在token失效时,要重新请求服务器生成新的token,如果不使用锁的话,在并发的情况下,会有很多请求同时请求服务器。 这里提供一个使用redis来实现锁的。 redis的setnx :当键不存在时插入成功,存在时插入失败。插入成功即拿到锁。 查询资料发现这样一段代码: <?php $ok = $redis->set($key, $value, array('nx', 'ex' => $ttl)); if ($ok) { $cache->update(); $re原创 2021-03-02 14:27:27 · 459 阅读 · 0 评论 -
使用 Redis 实现延时队列
使用 Redis 实现延时队列 场景描述:订单在下单之后一定时间内没有支付,则关闭该订单 实现方式:用户下单-> 生成订单记录-> 将订单信息推入延时队列任务中-> 到时间检查订单的支付状态(未支付则关闭订单) 使用redis 实现延时队列 的功能 思路: 用户在调用延时任务的方法时,需要传入两个参数(任务脚本,延时时间)。 通过redis 有序集合来存储执行时间,每次取出第一个元素,执行时间与当前时间对比,如果小于等于当前时间则执行改脚本。并且移除改元素。 由于redis 集合具原创 2020-05-23 18:19:08 · 336 阅读 · 0 评论