201709-22 Nginx 通过 Lua + Redis 实现动态封禁 IP 一、背景为了封禁某些爬虫或者恶意用户对服务器的请求,我们需要建立一个动态的IP黑名单。对于黑名单之内的IP,拒绝提供服务。二、架构实现IP黑名单的功能有很多途径:1、在操作系统层面,配置iptables,拒绝指定IP的网络请求;2、在WebServer层面,通过Nginx自身的deny选项或者lua插件配置IP黑名单;3、在应用层面,在请求服务之前检查一遍客户端IP是否在黑名单。为了方... 继续阅读 >
201706-27 Redis高级功能 - 慢查询日志 Redis提供了5种数据结构,但除此之外,Redis还提供了注入慢查询分析,RedisShell、Pipeline、事务、与Lua脚本、Bitmaps、HyperLogLog、PubSub、GEO等附加功能,这些功能可以在某些场景发挥很重要的作用.慢查询分析许多存储系统(如:MySQL)提供慢查询日志帮助开发与运维人员定位系统存在的慢操作.所谓慢查询日志就是系统在命令执行前后计算每条命令的执行时间,当超过预设阈值,就将这条命令的相关信息(例... 继续阅读 >
201703-20 缓存那些事 前言一般而言,现在互联网应用(网站或App)的整体流程,可以概括如图1所示,用户请求从界面(浏览器或App界面)到网络转发、应用服务再到存储(数据库或文件系统),然后返回到界面呈现内容。随着互联网的普及,内容信息越来越复杂,用户数和访问量越来越大,我们的应用需要支撑更多的并发量,同时我们的应用服务器和数据库服务器所做的计算也越来越多。但是往往我们的应用服务器资源是有限的,且技术变革是缓慢的,数... 继续阅读 >
201703-15 Redis之父:10x程序员应该具备哪些素质? 在开发界有一个长期引起争议的说法,那就是所谓的10x程序员是否存在?这个说法是Brooks,F.P在《没有银弹》中首次提出的,他认为在普通设计师(程序员)和优秀设计师(程序员)之间,有着10倍多的差异。对于10x程序员是否存在这个问题,开源键值存储数据库系统Redis的开发者antirez(SalvatoreSanfilippo)认为,如果把编程工作看作是一门“非线性”学科的话,那么不仅存在10x程序员,甚至连100x程序员这种异兽都有,同... 继续阅读 >
201611-30 Redis单机主从高可用性优化 redis是一款高性能的内存数据库,本文侧重描述redis在主从模式下遇到的一些问题以及如何调优,特别是在云环境下遇到的一些特殊问题,至于redis如何使用以及数据结构等,可以百度,网上有大量的资料。主结点在非集群环境的情况下,使用redis主从模式来保证业务的高可用性,因此在此种模式下,读写都在主机,要保证主机高性能必须在主机上尽量少的IO操作同时又要兼顾网络导致的主从断链而带来的频繁的fullsync,因此针对... 继续阅读 >
201611-23 Redis 主从配置心得及其高可用方案 redis主从复制过程:当配置好slave后,slave与master建立连接,然后发送sync命令。无论是第一次连接还是重新连接,master都会启动一个后台进程,将数据库快照保存到文件中,同时master主进程会开始收集新的写命令并缓存。后台进程完成写文件后,master就发送文件给slave,slave将文件保存到硬盘上,再加载到内存中,接着master就会把缓存的命令转发给slave,后续master将收到的写命令发送给slave。如果master同时收到... 继续阅读 >
201611-03 memcached与redis实现的对比 memcached和redis,作为近些年最常用的缓存服务器,相信大家对它们再熟悉不过了。前两年还在学校时,我曾经读过它们的主要源码,如今写篇笔记从个人角度简单对比一下它们的实现方式,权当做复习,有理解错误之处,欢迎指正。文中使用的架构类的图片大多来自于网络,有部分图与最新实现有出入,文中已经指出。一.综述读一个软件的源码,首先要弄懂软件是用作干什么的,那memcached和redis是干啥的?众所周知,数据一般会放在数... 继续阅读 >
201608-01 redis 常用命令 一:客户端启动redis./redis-server&二:在客户端打开redis操作窗口sudoredis-cli三:获取所有的keykeys*四:Hashes相关1:获取某个hash中全部的filed及value。hgetalluser2:设置hashfield为指定值,如果key不存在,则先创建。hsetmyhashfield1Hello3:同时设置hash的多个field。hmsetmyhashfield1Hellofield2World4:获取指定的hashfield: hgetmyhashfield 5:获取全部指定的hashfiled... 继续阅读 >
201601-27 Yii2.0使用Redis使用技巧缓存 前些天简单学习了下Redis,现在准备在项目上使用它了。我们目前用的是Yii2框架,在官网搜索了下Redis,就发现了yii2-redis这扩展。安装后使用超简单,打开common/config/main.php文件,修改如下。'cache'=>[//'class'=>'yii\caching\FileCache','class'=>'yii\redis\Cache',],'redis'=>['class'=>'yii\redis\Connection','hostname'=>'localhost','port'=>6379,'database'=>0,],... 继续阅读 >
201504-25 Windows下开机自动启动Redis的实现方法 Windows下安装Redis参考这篇文章:Windows下安装使用Redis及其PHP扩展1、将启动命令写入批处理文件createredis.bat(路径以自己的安装路径为准):E:\tools\redis\32bit\redis-server.exeE:\tools\redis\32bit\redis.conf2、利用vbs调用bat(路径以自己保存的createredis.bat路径为准):新建一个vbs文件openredis.vbs:CreateObject("WScript.Shell").Run"cmd/cE:\bat\createredis.bat",0接下来就是如何调用vbs了,我采... 继续阅读 >
201504-25 Centos如何设置开机自动启动Redis 修改redis.conf,打开后台运行选项:#BydefaultRedisdoesnotrunasadaemon.Use'yes'ifyouneedit.#NotethatRediswillwriteapidfilein/var/run/redis.pidwhendaemonized.daemonizeyes编写脚本,vim/etc/init.d/redis:#chkconfig:23451090#description:StartandStopredisPATH=/usr/local/bin:/sbin:/usr/bin:/binREDISPORT=6379#实际环境而定EXEC=/usr/local/redis/src/redis-server#实... 继续阅读 >
201504-01 构建高并发高可用的电商平台架构实践(二)——架构剖析 CDNCDN系统能够实时地根据网络流量和各节点的连接、负载状况以及到用户的距离和响应时间等综合信息将用户的请求重新导向离用户最近的服务节点上。其目的是使用户可就近取得所需内容,解决Internet网络拥挤的状况,提高用户访问网站的响应速度。对于大规模电子商务平台一般需要建CDN做网络加速,大型平台如淘宝、京东都采用自建CDN,中小型的企业可以采用第三方CDN厂商合作,如蓝汛、网宿、快网等。当然在选择CDN厂商时,需要考... 继续阅读 >
201501-27 Windows下安装使用Redis及其PHP扩展 1、windows下安装redis并测试redis下载地址:https://github.com/dmajkic/redis/downloads下载到的Redis支持32bit和64bit。根据自己实际情况选择,我选择32bit。把32bit文件内容拷贝到需要安装的目录下,比如:D:\dev\redis-2.4.5。打开一个cmd窗口,使用cd命令切换到指定目录(D:\dev\redis-2.4.5)运行redis-server.exeredis.conf。运行以后出现如下界面:这就说明Redis服务端已经安装成功。重新打开一个cmd窗口,使用cd... 继续阅读 >
201501-27 Ubuntu中安装启用Redis以及对应PHP扩展安装 使用apt-get安装在LinuxUbuntu中安装Redis数据库#安装Redis服务器端~sudoapt-getinstallredis-server安装完成后,Redis服务器会自动启动,我们检查Redis服务器程序#检查Redis服务器系统进程~ps-aux|grepredis#通过启动命令检查Redis服务器状态~netstat-nlt|grep6379#通过启动命令检查Redis服务器状态~sudo/etc/init.d/redis-serverstatus编译安装~wgethttp://download.redis.io/releases/redis-2.8.3.tar.gz... 继续阅读 >
201501-27 Redis批量删除多个key的命令 删除单个key比较简单,直接使用命令delxxx,批量删除多个keys可用下面的方法。假设redis的安装目录如下:/opt/redis/src/则首先进入到该目录,然后执行如下命令:./redis-clikeys"map_info_*"|xargs/opt/redis/src/redis-clidel删除成功之后,会显示删除成功的keys个数:(integer)26 继续阅读 >
201412-11 避免误用 Redis Redis是目前NoSQL领域的当红炸子鸡,它象一把瑞士军刀,小巧、锋利、实用,特别适合解决一些使用传统关系数据库难以解决的问题。但是Redis不是银弹,有很多适合它解决的问题,但是也有很多并不适合它解决的问题。另外,Redis作为内存数据库,如果用在不适合的场合,对内存的消耗是很可观的,甚至会让系统难以承受。 我们可以对系统存储使用的数据以两种角度分类,一种是按数据的大小划分,分成大数据和小数... 继续阅读 >