Redis

如何安装redis和给wordpres加速?

拟墨画扇 提交于 2020-08-18 08:40:31
一、安装tcl wget http://downloads.sourceforge.net/tcl/tcl8.6.1-src.tar.gz /usr/local/src/tcl8.6.1/unix ./configure --prefix=/usr --mandir=/usr/share/man --without-tzdata $([ $(uname -m) = x86_64 ] && echo --enable-64bit) && make && sed -e "s@^(TCL_SRC_DIR='). @\1/usr/include'@" -e "/TCL_B/s@='(-L)\?. unix@='\1/usr/lib@" -i tclConfig.sh make install && make install-private-headers && ln -v -sf tclsh8.6 /usr/bin/tclsh && chmod -v 755 /usr/lib/libtcl8.6.so vim tests/integration/replication-psync.tcl 把after 后面的值设置为1000,然后重新make test 二、安装redis(源码安装) wget http://download.redis.io/releases/redis-4.0.6

openresty lua的 userdata:null与ngx.null问题总结

久未见 提交于 2020-08-18 08:37:50
背景 解析json的时候发现一个问题,如果字段中包含null值, 返回的结果不是 nil 而是 userdata 类型的 ngx.null 分析 nil是lua中基本数据类型之一,用来表示一个无效值,如果一个变量被设置为nil相当于告知该变量未定义(不存在)一样 OpenResty 的 Lua 接口还提供了一种特殊的空值,即 ngx.null,用来表示不同于 nil 的“空值” json中的value如果是null, 经过cjson.decode以后,该 value的类型就是userdata,值是ngx.null , 如果强制转换为字符串,则打印出来的内容是 “userdata: null”, 所以decode之后,判断value是否为空的时候,需要和ngx.null比较 测试 -- test_cjson.lua local cjson = require('cjson') local cjson_decode = cjson.decode local cjson_encode = cjson.encode local aa = '{"cc":null}' bb = cjson_decode(aa) print(type(bb.cc)) print(tostring(bb.cc)) 输出 userdata userdata: NULL 参考 https://notes

使用port-forward访问集群中的应用程序,以Redis 为例

霸气de小男生 提交于 2020-08-18 08:28:06
为Redis创建Deployment和Service 创建 Redis Deployment,YAML文件如下: apiVersion: apps/v1 kind: Deployment metadata: name: redis-master labels: app: redis spec: selector: matchLabels: app: redis role: master tier: backend replicas: 1 template: metadata: labels: app: redis role: master tier: backend spec: containers: - name: master image: redis resources: requests: cpu: 100m memory: 100Mi ports: - containerPort: 6379 执行命令,以创建 Redis Deployment kubectl apply -f https://kuboard.cn/statics/learning/ptc/port-forward/redis-master-deployment.yaml 执行命令,查看Pod状态: kubectl get pods 输出结果如下: NAME READY STATUS RESTARTS

进一步释放技术红利,阿里云推出全新内存增强型实例re6,性能提升30%

拜拜、爱过 提交于 2020-08-18 08:16:02
5月7日,国内最大云计算厂商阿里云宣布推出全新一代内存增强型实例,提供1:14.8超大内存比内存容量,满足内存型数据库如SAP HANA、Redis等应用,充分释放技术红利,帮助线下企业快速上云,完成数字化转型。 预约观看 产品详情 全新一代内存增强型实例re6采用Intel 最新CascadeLake 架构处理器,主频2.5GHz,睿频最高可达3.2GHz,相对于上一代性能最高提升30%以上。 全面上云已经成为趋势,越来越多的企业级用户选择云平台搭建自己的系统。从测试系统的迁移到生产系统搭建,从边缘业务到核心业务,云计算承担了越来越大的业务量,作为数字经济的“新基建”,阿里云也在快速迭代,为企业提供更优质的服务。 提供超大的单核内存容量:内存增强型实例是SAP用户上云不二之选 SAP HANA 是基于内存计算技术的高性能实时数据计算平台,将联机分析处理 (OLAP) 和联机事务处理 (OLTP) 整合到了单一的内存计算数据库中,这不仅消除了磁盘瓶颈,还提供了前所未有的高性能。 阿里云内存增强型实例re6几乎是为SAP用户量身打造的企业级实例产品,最高可以支持3TiB内存总容量,满足绝大部分企业用户的需求,在云计算的规模与弹性加持下,re6的稳定性全面超越线下一体机。同时,阿里云re6系列实例即将全部通过SAP HANA认证,支持包年包月、RI等付费模式

01排行榜设计

Deadly 提交于 2020-08-18 07:54:41
排行榜设计 redis zset cid, uid, score: 赛事id, 用户id, 成绩 组成唯一键 api计数 参与排名:(赛事id, 用户id, 成绩) 获取排名:(topn + 当前用户自己排名) 等比赛结束后,redis中的数据,保存到数据库持久化。 时间复杂度分析 m*logn 应用场景 朋友圈好友步数排名 悦动圈跑步排名 高考成绩排名。桶排序 力扣周比赛排名。 后期补全细节 来源: oschina 链接: https://my.oschina.net/tplinuxhyh/blog/4461217

关于分布式锁的这些加分(钱)的面试题,你都拿到了吗?

∥☆過路亽.° 提交于 2020-08-18 07:38:58
引言 为什么要学习分布式锁? 最简单的理由就是作为一个社招程序员,面试的时候一定被面啦,你看怎么多公众号都翻来覆去的发分布式锁的主题,可见它很重要啦,在高考里这就是送分题,不要怪可惜的。 那应届生也会问吗?这就不一定了,但是,如果你会,面试官肯定会多给你那点分(钱) 第三,分布式锁在稍微有丢丢规模大系统里是必备技能啦。认真看看吧。 分布式锁要解决的问题 分布式锁是一个在分布式环境中的重要原语,它表明不同进程间采用互斥的方式操作共享资源。常见的场景是作为一个sdk被引入到大型项目中,主要解决两类问题: 提升效率:加锁是为了避免不必要的重复处理。例如防止幂等任务被多个执行者抢占。此时对锁的正确性要求不高; 保证正确性:加锁是为了避免Race Condition导致逻辑错误。例如直接使用分布式锁实现防重,幂等机制。此时如果锁出现错误会引起严重后果,因此对锁的正确性要求高。 Java里的锁: 锁是开发过程中十分常见的工具,你一定不陌生,悲观锁,乐观锁,排它锁,公平锁,非公平锁等等,很多概念,如果你对java里的锁还不了解,可以参考这一篇:不可不说的Java“锁”事(https://tech.meituan.com/2018/11/15/java-lock.html),这一篇写的很全面了,但是对于初学者,知道这些锁的概念,由于缺乏实际工作经验,可能并不了解锁的实际使用场景

redis高性能数据结构之有序集

牧云@^-^@ 提交于 2020-08-18 07:31:40
背景 已经讲了两个数据结构了 ,今天我们来讲一下在redis中最具有特色的数据结构zset(有序列表) ZSET 简介 zset有序列表,显而易见意思就是一个有序且是不重复上的数据结构,它类似于Java中的sortset和hashmap的结合体,但是在redis中是通过两种底层数据结构实现的。一种是ziplist压缩列表,另一种就是redis中最经典的数据结构skipList跳跃表。 底层数据结构的选择 第一次插入数据结构的选择 在使用ZDD 命令添加第一个元素到空key时,程序通过检查输入的第一个元素来决定该创建什么编码的有序集。 符合下面的条件就会创建ziplist 服务器属性server.zset_max_ziplist_entries 的值大于 0 元素的member长度小于服务器属性server.zset_max_ziplist_value的值(默认64) 不符合上面的条件就使用skiplist跳跃表实现编码。 后期编码转换 当刚开始选择了ziplist,会在下面两种情况下转为skipList。 ziplist所保存的元素超过服务器属性server.zset_max_ziplist_entries 的值(默认值为 128 ) 新添加元素的 member 的长度大于服务器属性 server.zset_max_ziplist_value 的值(默认值为 64 )、

php yield关键字以及协程的实现

人走茶凉 提交于 2020-08-18 07:15:39
php的yield是在php5.5版本就出来了,而在初级php界却很少有人提起,我就说说个人对php yield的理解 Iterator接口 在php中,除了数组,对象可以被foreach遍历之外,还有另外一种特殊对象,也就是继承了iterator接口的对象,也可以被对象遍历,但和普通对象的遍历又有所不同,下面是3种类型的遍历情况: 可以看出,迭代器的遍历,会依次调用重置,检查当前数据,返回当前指针数据,指针下移方法,结束遍历的条件在于检查数据返回true或者false 生成器 生成器和迭代器类似,但也完全不同 生成器允许你在 foreach 代码块中写代码来迭代一组数据而不需要在内存中创建一个数组, 那会使你的内存达到上限,或者会占据可观的处理时间。相反,你可以写一个生成器函数,就像一个普通的自定义函数一样, 和普通函数只返回一次不同的是, 生成器可以根据需要 yield 多次,以便生成需要迭代的值。 生成器使用yield关键字进行生成迭代的值 例如: 一:生成器方法 生成器它的内部实现了以下方法: Generator implements Iterator { //返回当前产生的值 public mixed current ( void ) //返回当前产生的键 public mixed key ( void ) //生成器继续执行 public void next (

Laravel Redis分布式锁实现源码分析

牧云@^-^@ 提交于 2020-08-18 07:14:38
首先是锁的抽象类,定义了继承的类必须实现加锁、释放锁、返回锁拥有者的方法。 namespace Illuminate\Cache; abstract class Lock implements LockContract { use InteractsWithTime; // 锁的名称 protected $name; // 锁的时长 protected $seconds; // 当前操作锁的拥有者 protected $owner; // 获取锁失败时,重新获取锁需要等待的毫秒数 protected $sleepMilliseconds = 250; // 构造函数 public function __construct($name, $seconds, $owner = null) { if (is_null($owner)) { $owner = Str::random(); } $this->name = $name; $this->owner = $owner; $this->seconds = $seconds; } // 加锁 abstract public function acquire(); // 释放锁 abstract public function release(); // 获取锁中保存的拥有者信息 abstract protected function

面试官:你经历过数据库迁移么?有哪些注意点和难点?

拟墨画扇 提交于 2020-08-18 05:31:38
前言 最近写了很多数据库相关的文章,大家基本上对数据库也有了很多的了解,数据库本身有所了解了,我们是不是应该回归业务本身呢? 大家去了解过自己企业数据库的部署方式么?是怎么部署的,又是部署在哪里的?部署过程中可能会出现的问题有哪些? 是主从?还是双主?有没有分库?大的表做了分表没?等等...部署方式大概率也都是分库的,表数量级超千万基本上都开始分表了,考虑周全的企业,肯定也有数据库的冷备,热备,灾备,以及异地容灾等等。 我还记得我大学做项目,学校就是买了很多物理机,我们的项目和数据库都是部署在自己内部的服务器上的,那家伙一到夏天风我嗡嗡嗡的吹,烦死了,机房还很热。 但是我敢打赌,大家现在所在的企业,大概率都是使用了各种云服务厂商的服务部署方式,那就引入了今天的第一个思考。 为什么数据库要上云呢? 我们公司的大多数服务以及数据库都是在对应的云服务厂商的,那问题就来了,为啥都要上云呢? 在思考这个问题的时候,我第一时间想到了反证法, 不上云的坏处是啥? 成本 相较于传统服务器需要购买、租用的方式,云服务器采用即用即收费的方式,减少购买成本,灵活扩展的容量可以按自己需求来定,不用前期估量需要用多少。 我之前所在的电商活动团队,每次到了大促我们就去租赁云服务厂商的流量机,等活动结束就还回去,真的就是成本最大化了,而且还是根据你的使用流量计费。 如果大家还是使用自己购买的服务器