redis
wuxing164
这个作者很懒,什么都没留下…
展开
-
redis锁用法
$stock = $this->getStockFromDb();//查询剩余库存 if ($stock>0){ $this->ReduceStockInDb(); // 在数据库中进行减库存操作 echo "successful"; }else{ echo "库存不足"; }很简单的一个场景,用户下单,咱们查询商品库存够不够,不够的话直接返回库存不足类似的错误信息,如果库存够的话直接在数据库中库存-1,然后返回成功,在业务逻辑上这段代码..原创 2020-12-03 13:51:28 · 1078 阅读 · 1 评论 -
解锁redis锁
if(Redis::set("my:lock", 1, "nx", "ex", 10)) { ... do something Redis::del("my:lock")}上面的代码把my:lock设置为1,当且仅当这个lock不存在的时候,设置完成之后设置过期时间为10。获取锁的机制是对了,但是删除锁的机制直接使用del是不对的。因为有可能导致误删别人的锁的情况。比如,这个锁我上了10s,但是我处理的时间比10s更长,到了10s,这个锁自动过期了,被别人取走了,并且对它重新.原创 2020-08-25 17:19:21 · 383 阅读 · 0 评论 -
redis一些常用命令
setnx key value 当key不存在时,设置值,如果存在不替换setex key time value 设置key的过期时间并且设置值 如果time为-1值永不过期,值存不存在都会替换ttl key查看过期时间expire key time 设置key的过期时间...原创 2020-03-28 10:31:05 · 94 阅读 · 0 评论 -
Redis 事务
1.Redis 的基本事务需要用到 MULTI, EXEC 命令, 这种事务可以让给一个客户端在不被其他客户端打断的情况下执行多个命令.2. 在执行完 MULTI 命令后, 还是会继续执行其他客户端的命令, 只要在执行 EXEC 命令后, 才不会去执行其他客户端的命令.3.Redis 的事务是不可嵌套的, 当客户端已经处于事务状态, 而客户端又再向服务器发送 MULTI 时, 服务器只是简单地...原创 2019-08-02 09:17:32 · 104 阅读 · 0 评论 -
redis知识
1.说一说 Redis 是什么Redis 是一种「Key-Value」的内存型、非关系型数据库,属于 NoSQL 的一种。Redis 的读写速度特别快,特别适合读写频繁的场景。Redis 支持主从复制,支持数据持久化。2.知道 Redis 有哪些常用数据类型吗String List Hash Set Zset3.说一下 Redis 用来做什么利用 String,可...原创 2019-07-29 09:24:24 · 94 阅读 · 0 评论 -
redis-分布式锁
$ok = $redis->set($key, $random, array('nx', 'ex' => $ttl));if ($ok) { //获取到锁 ... do something ... if ($redis->get($key) == $random) { $redis->del($key); }}Re...原创 2019-07-06 08:56:08 · 173 阅读 · 0 评论 -
redis排行榜之日排行周排行设计
ZINCRBY rank:20150401 5 1ZINCRBY rank:20150401 1 2ZINCRBY rank:20150401 10 3ZRANGE rank:20150401 0 -1 withscores1)"2"2)"1"3)"1"4)"5"5)"3"6)"10"按照分数从高到低,获取 top10ZREVRANGE rank:20150401 ...原创 2019-07-09 09:42:09 · 683 阅读 · 0 评论 -
在秒杀,抢购等并发场景下,使用redis防止超卖
$uniqid = uniqid('uid-', TRUE); // 模拟唯一用户ID $redis = new Redis(); $redis->connect('127.0.0.1', 6379); // 连接 redis $redis->watch('rest_count'); // 监测 rest_count 是否被其它的进程更改 ...原创 2019-06-13 09:14:38 · 1112 阅读 · 0 评论 -
redis建议项
线上 Redis 禁止使用 Keys 正则匹配操作Redis 是单线程处理,在线上 KEY 数量较多时,操作效率极低【时间复杂度为 O(N)】,该命令一旦执行会严重阻塞线上其它命令的正常请求,而且在高 QPS 情况下会直接造成 Redis 服务崩溃!如果有类似需求,请使用 scan 命令代替!线上禁止使用 monitor 命令禁止生产环境使用 monitor 命令,monitor 命令...原创 2019-04-22 10:16:32 · 160 阅读 · 0 评论 -
redis的事务
事务为了保证多条命令组合的原子性,Redis提供了简单的事务以及集成Lua脚本来解决这个问题.熟悉关系型数据库的开发者应该对事务比较了解,简单地说,事务表示一组动作,要么全部成功,要不全部不成功.例如在在电商网站中用户购买商品A那么需要将商品A的库存-1,并创建一个订单.这两个操作要么远不执行成功,要么全部执行不成功,否则会出现数据不一致的情况.Redis提供了简单的功转载 2017-10-05 10:27:26 · 190 阅读 · 0 评论 -
redis排行榜例子
# 1、存储几个排行榜成员数据(这里可以理解为把自己系统已有数据加载到 Redis 中) ZADD testTop 23 member1 25 member2 # 2、增加某个人的分数(这里的分数就是排行的依据可以是浮点类型) ZINCRBY testTop 20 member1 # 此时 testTop 中 member1 的分数就编程了 43 ZINCRBY t转载 2017-09-18 23:14:48 · 1244 阅读 · 0 评论 -
redis 数据结构
String 字符串字符串是一种最基本的Redis值类型。key 都是字符串类型,Redis字符串是二进制安全的,这意味着一个Redis字符串能包含任意类型的数据。值最大值 512M字符串(包括 JSON、XML 等)数字(整数、浮点数)二进制(图片、音频、视频)list(列表)Redis 列表是简单的字符串列表,按照插入顺序排序。转载 2017-09-08 12:09:59 · 212 阅读 · 0 评论 -
redis基本操作
redis-cli -h 127.0.0.1 -p 6379 shutdown 停止/usr/src/redis-3.0.4/src/redis-server /etc/redis.conf 开启daemonize yes 设置后台运行requirepass 设置密码 设置密码原创 2017-09-16 12:01:17 · 159 阅读 · 0 评论 -
redis基础文章
1.Redis 概览 https://segmentfault.com/a/11900000098033922.Redis 字符串 https://segmentfault.com/a/11900000098036383.Redis 哈希 https://segmentfault.com/a/11900000098037024.Redis 列表 https://segmentfault转载 2017-08-30 11:48:56 · 229 阅读 · 0 评论 -
Redis常见7种使用场景
1.简单字符串缓存实战$redis->connect('127.0.0.1', 6379);$strCacheKey = 'Test_bihu';//SET 应用$arrCacheData = [ 'name' => 'job', 'sex' => '男', 'age' => '30'];$redis->set($strCacheKey, json_转载 2017-08-30 11:28:54 · 2243 阅读 · 0 评论 -
centos安装redis
参考地址:https://segmentfault.com/a/1190000009647246转载 2017-06-25 23:49:41 · 180 阅读 · 0 评论 -
ubuntu安装redis流程
方式一:下载地址:http://redis.io/download,下载最新文档版本。本教程使用的最新文档版本为 2.8.17,下载并安装:$ wget http://download.redis.io/releases/redis-2.8.17.tar.gz$ tar xzf redis-2.8.17.tar.gz$ cd redis-2.8.17$ makemake完后转载 2016-10-09 08:45:51 · 209 阅读 · 0 评论