redis
张高伟
人生最美的是相遇,最难得的是相逢!
展开
-
php 使用redis锁限制并发访问类
1.并发访问限制问题对于一些需要限制同一个用户并发访问的场景,如果用户并发请求多次,而服务器处理没有加锁限制,用户则可以多次请求成功。例如换领优惠券,如果用户同一时间并发提交换领码,在没有加锁限制的情况下,用户则可以使用同一个换领码同时兑换到多张优惠券。伪代码如下:if A(可以换领) B(执行换领) C(更新为已换领)D(结束)如果用户并发提交换领码,都原创 2017-06-10 12:26:14 · 22838 阅读 · 0 评论 -
redis SETNX说明
SETNX key value将 key 的值设为 value ,当且仅当 key 不存在。若给定的 key 已经存在,则 SETNX 不做任何动作。SETNX 是『SET if Not eXists』(如果不存在,则 SET)的简写。可用版本:>= 1.0.0时间复杂度:O(1)返回值:设置成功,返回 1 。设置失败,返回 0 。redis> EXISTS job ...原创 2018-04-11 12:40:58 · 2623 阅读 · 0 评论 -
Redis实现分布式锁
一、分布式锁的作用: redis写入时不带锁定功能,为防止多个进程同时进行一个操作,出现意想不到的结果,so...对缓存进行插入更新操作时自定义加锁功能。 二、Redis的NX后缀命令 Redis有一系列的命令,其特点是以NX结尾,NX的意思可以理解为 NOT EXISTS(不存在),SETNX命令 (SET IF NOT EXISTS) 可以理解为如果不存在则插入,Redis分布式锁的实...转载 2018-04-11 14:49:59 · 157 阅读 · 0 评论 -
Redis MULTI解释
MULTI标记一个事务块的开始。事务块内的多条命令会按照先后顺序被放进一个队列当中,最后由 EXEC 命令原子性(atomic)地执行。可用版本:>= 1.2.0时间复杂度:O(1)。返回值:总是返回 OK 。redis> MULTI # 标记事务开始OKredis> INCR user_id # 多条命令按顺序入队QUEUEDredis...转载 2018-04-11 15:20:55 · 808 阅读 · 0 评论 -
Redis实现分布式锁(setnx、getset、incr)以及如何处理超时情况
一、通过setnx实现 1、setnx key value 当且仅当key不存在,将key的值设置为value,并且返回1;若是给定的key已经存在,则setnx不做任何动作,返回0。public static Boolean setnx(final String key, final String value, final long seconds) { ...转载 2018-04-11 16:30:41 · 1130 阅读 · 0 评论 -
高性能开发(1) Redis缓存主从配置详解
一、前言 redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方...转载 2018-05-14 22:51:59 · 187 阅读 · 0 评论 -
redis 学习笔记整理
redis 的默认端口:6379keys * 查看当前数据库的所有keykeys my? 模糊查询当前数据库的所有keydel 删除keyexists my1(0 不存在,1存在) 判断是否存在get keyname 获取当前数据库的keynamerename oldname newname 修改key 的名字expire keyname 10 数据的有效执行时间t原创 2017-06-12 08:47:55 · 233 阅读 · 0 评论 -
Redis内存使用优化与存储
Redis常用数据类型Redis最为常用的数据类型主要有以下五种:StringHashListSetSorted set在具体描述这几种数据类型之前,我们先通过一张图了解下Redis内部内存管理中是如何描述这些不同数据类型的: 首先Redis内部使用一个redisObject对象来表示所有的key和value,redisObject最主要的信息如上图所示:type代表一个v翻译 2017-06-14 10:03:50 · 203 阅读 · 0 评论 -
基于redis的点赞功能设计(张高伟)
前言点赞其实是一个很有意思的功能。基本的设计思路有大致两种, 一种自然是用mysql等数据库直接落地存储, 另外一种就是利用点赞的业务特征来扔到redis(或memcache)中, 然后离线刷回mysql等。直接写入Mysql直接写入Mysql是最简单的做法。做两个表即可,post_like记录文章被赞的次数,已有多少人赞过这种数据就可以直接从表中查到;原创 2017-06-14 15:21:37 · 5288 阅读 · 0 评论 -
CentOS系统安装Redis及Redis的PHP扩展
redis简介redis是一款很不错的高性能的key-value数据库,它的出现在很大程度上弥补了很多像memcached这类的keyvalue存储的不足,它的特点有:支持持久化、半持久化数据保存、支持主从同步、value值支持多种类型等等。下面来一起看看在CentOS系统安装Redis及Redis的PHP扩展的详细介绍。1、安装Redis1.1 如果没有安装wget,安装wget转载 2017-12-13 09:28:35 · 197 阅读 · 0 评论 -
如何查看redis占用内存大小
redis缓存固然高效,可是它会占用我们系统中宝贵的内存资源,特别是当我们的项目运行了一段时间后,我们需要看一下redis占用了多少内存,那么可以用“info”命令查看。执行info命令后,找到Memory这一栏,就可以看到内存的使用信息了,如下图:# Memoryused_memory:13490096 //数据占用了多少内存(字节)used_原创 2017-12-08 10:20:41 · 31541 阅读 · 1 评论 -
php 使用redis锁限制并发访问类
1.并发访问限制问题对于一些需要限制同一个用户并发访问的场景,如果用户并发请求多次,而服务器处理没有加锁限制,用户则可以多次请求成功。例如换领优惠券,如果用户同一时间并发提交换领码,在没有加锁限制的情况下,用户则可以使用同一个换领码同时兑换到多张优惠券。伪代码如下:if A(可以换领) B(执行换领) C(更新为已换领)D(结束)如果用户并发提交换领码,都能通转载 2017-12-06 16:15:33 · 290 阅读 · 0 评论 -
php 基于redis计数器类
Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。 本文将使用其incr(自增),get(获取),delete(清除)方法来实现计数器类。1.Redis计数器类代码及演示实例RedisCounter.class.php<?php/** * PHP基于Redis计数器类 * Da转载 2017-12-06 16:10:37 · 573 阅读 · 0 评论 -
PHP操作Redis LIST ,SET, HASH 的相关命令 (一)
1.PHP操作Redis之List1、lPush()/rPush()[html] view plain copy print?lPush()的语法格式是:$redis->lPush(key, value),作用是将value添加到链表key的左边(头部)。 rPush()的语法格式是:$redis->rPush(key, value),作用是将value添转载 2017-11-24 14:59:31 · 809 阅读 · 0 评论 -
用Redis实现分布式锁 与 实现任务队列
这一次总结和分享用Redis实现分布式锁 与 实现任务队列 这两大强大的功能。先扯点个人观点,之前我看了一篇博文说博客园的文章大部分都是分享代码,博文里强调说分享思路比分享代码更重要(貌似大概是这个意思,若有误请谅解),但我觉得,分享思路固然重要,但有了思路,却没有实现的代码,那会让人觉得很浮夸的,在工作中的程序猿都知道,你去实现一个功能模块,一段代码,虽然你有了思路,但是实现的过程也是很耗时的,转载 2017-10-23 16:51:23 · 269 阅读 · 0 评论 -
windows下cmd使用redis
windows下启动Redis加入上面下载的redis的目录是F:\lmmbao\mengbao-lib\redis-2.8\bin\release\redis打开cmd窗口cd到上面的目录>cd F:\lmmbao\mengbao-lib\redis-2.8\bin\release\redis>>redis-server redis.windows.conf上面的命令将启原创 2017-10-19 18:28:38 · 1342 阅读 · 0 评论 -
Redis 三部曲之第二部 laravel中Redis 基本的数据隔离
上一篇 Redis三部曲(一)介绍了Laravel中Predis的几种基本数据类型的使用和Redis的概念,但是就算会写了,然而缓存什么时候使用呢???下面就结合上一篇的内容给大家说说Predis的一些组合用法,队列如何配合STRING类型或者HASH类型来组合使用,甚至把非关系变成和MySQl一样成为关系型的。队列与哈希的组合使用 - 实现数据关系化思路:利用队列里的值来做需要取数据转载 2017-09-30 09:48:23 · 1046 阅读 · 0 评论 -
redis使用
一切的前提都是已经安装好了redis服务器,并且能启动(我只总结了mac的安装方法:传送门)我自己使用的是mac系统,有个教程可以参考下,传送门:1.安装PHP PRedis 1>PRedis是PHP访问redis的扩展包,只需要下载原码即可,不需要安装PHP扩展(如php-redis.so)。 2>laravel通过Composer来安装第三方程序包(管理依赖关系) 3原创 2017-09-30 09:39:51 · 301 阅读 · 0 评论 -
高并发下PHP请求Redis异常处理
最近发现线上服务器经常报连接Redis异常:Uncaught exception 'RedisException' with message 'redis server went away'。 于是摘下一台线上机,对服务器一半以上的接口进行压测:$ http_load -p 100 -f 100000 urls.txt 100000 fetches, 100 max parallel原创 2017-07-17 14:19:38 · 1859 阅读 · 1 评论 -
php+redis实现电商秒杀功能
这一次总结和分享用Redis实现分布式锁来完成电商的秒杀功能。先扯点个人观点,之前我看了一篇博文说博客园的文章大部分都是分享代码,博文里强调说分享思路比分享代码更重要(貌似大概是这个意思,若有误请谅解),但我觉得,分享思路固然重要,但有了思路,却没有实现的代码,那会让人觉得很浮夸的,在工作中的程序猿都知道,你去实现一个功能模块,一段代码,虽然你有了思路,但是实现的过程也是很耗时的,特别是代码调试,转载 2017-07-12 19:15:05 · 420 阅读 · 0 评论 -
Redis Web
redis-manager是一个Laravel扩展包,运行在Laravel项目中,安装非常简单:$ composer require encore/redis-manager$ php artisan vendor:publish --provider="Encore\RedisManager\RedisManagerServiceProvider"然后打开http://localho原创 2018-01-16 17:50:30 · 378 阅读 · 0 评论