keys

因为不会Redis的scan命令,我被开除了

。_饼干妹妹 提交于 2020-03-04 19:50:28
那个深夜,我登上了公司的服务器,在Redis 命令行里敲入 keys* 后,线上开始报警,服务瞬间被卡死,我只能举起双手,焦急地等待几千万key被慢慢扫描,束手无策万念俱灰的时候,我收到了leader的短信:你明天不用来上班了。 虽然上面是我的臆想,事实上很多公司的运维也会禁用这些命令,来防止开发出错。但我在群里依然看到有同学在问“为什么Redis不能用 keys?我觉得挺好的呀”时,为了不让上面的情况发生,我决定写下这篇文章。 如何才能优雅地遍历Redis?作为一种可以称为数据库的组件,这是多么理所因当的要求。终于,Redis在2.8.0版本新增了众望所归的 scan操作,从此再也不用担心敲入了keys*, 然后等着定时炸弹的引爆。 学会使用 scan并不困难,那么问题又来了,它是如何遍历的?当遍历过程中加入了新的key,当遍历过程中发生了扩容,Redis是如何解决的?抱着深入学习的态度,以及为了能够将来在面试官面前谈笑风生,让我们一起来借此探索Redis的设计原理。 引言 开门见山,首先让我们来总结一下 scan的优缺点。 优点: 提供键空间的遍历操作,支持游标,复杂度O(1), 整体遍历一遍只需要O(N) 提供结果模式匹配 支持一次返回的数据条数设置,但仅仅是个hints,有时候返回更多 弱状态,所有状态只需要客户端需要维护一个游标 缺点: 无法提供完整的快照遍历

hadoop集群搭建无密登陆

孤人 提交于 2020-03-04 17:18:54
因为每次启动hadoop都需要登陆密码,在伪分布式中尚可,但是在大型集群中多个服务器不能每次都输入密码 ll -a 显示隐藏文件 touch 创建文件 流程: 1. 配置黑色部分; 2. 实现无密码的密钥登陆; 1.产生密钥对 2.复制公钥到另一个服务器 已显示 3.把此文件追加到.ssh的authorized_keys文件中 4.测试 注意:普通用户需要把authorized_keys设置成600 来源: oschina 链接: https://my.oschina.net/u/4434424/blog/3187935

PHP常用数组函数列表

Deadly 提交于 2020-03-04 07:50:20
PHP常用的数组函数 is_array(mixed $var):bool , 检测变量是否为数组, 返回Ture/False。 <?php $num = 1 ; $nums = [ '1' , '2' ] ; var_dump ( is_array ( $num ) ) ; var_dump ( is_array ( $nums ) ) ; explode(string $delimiter, string $string [, int $limit]): array 使用分隔符 $delimiter 分隔字符串 $string 。 如果设置了 limit 参数并且是正数,则返回的数组包含最多 limit 个元素,而最后那个元素将包含 string 的剩余部分。 如果 limit 参数是负数,则返回除了最后的 - limit 个元素外的所有元素。 如果 limit 是 0,则会被当做 1。 <?php $ids = '1,2,3,4,5,6' ; $arr1 = explode ( ',' , $ids ) ; $arr2 = explode ( ',' , $ids , 3 ) ; print_r ( $arr1 ) ; print_r ( $arr2 ) ; implode(string $glue, array $pieces):string , 指定分隔符 $glue

git+gitolite如何实现权限控制

99封情书 提交于 2020-03-03 18:41:14
写在前面 因平时工作环境是svn,想使一下git,于是在网站服务器上搭建一个git作为平时代码的存储。 以下内容转自: https://www.cnblogs.com/fly_dragon/p/8718614.html 亲测有效。 关于gitolite权限管理也可参考 git+gitolite如何实现权限控制 或 git服务器搭建及gitolite权限管理 。 声明:本教程,仅作为配置的记录,细节不展开,需要您有一点linux的命令基础,仅作为配置参考。 1. 系统环境 系统: Linux: CentOS 7.2 64位 由于CentOS已经内置了 OpenSSH ,如果您的系统没有,请自行安装。 查看ssh版本 $ ssh -V # 输出以下表示没问题,可以继续。 版本可能不一致,能用即可。 OpenSSH_6.6.1p1, OpenSSL 1.0.1e-fips 11 Feb 2013 避免系统环境和其他的不一致,请核对您系统的版本,其他发行版请对应修改。 2. 安装git 建议以下操作都切换到root # 请确保您切换到了root账户 $ su root $ yum install -y git # 验证是否安装成功 $ git --version # 输出如下内容表示成功: git version x.x.x.x 3. 添加git的管理的账户和设置密码

hadoop2.5.2 配置免密码登录

我怕爱的太早我们不能终老 提交于 2020-03-03 17:43:19
配置免登录 Ø 创建或者修改密钥目录权限 假设本机的IP为“ 192.168.1.100 ”,配置免登录的操作步骤如下: 1. 以hadoop用户登录各服务器。 2. 执行以下命令,修改“.ssh 目录”权限。 chmod 755 ~/.ssh 说明:如果“.ssh”目录不存在,请在/home/hadoop目录执行 mkdir ~/.ssh 命令创建。 a) 若“.ssh目录”不存在,创建”.ssh目录”。 mkdir ~/.ssh b) 修改“.ssh 目录”权限。 chmod 755 ~/.ssh Ø 创建公钥和私钥(此操作在所有服务器完成后再进入下一步) 1. 以hadoop用户登录本机(假设本机的IP为“192.168.1.100”)。 2. 执行以下命令,进入“.ssh”目录。 cd /home/hadoop/.ssh 3. 执行以下命令后,如果提示,就一直按“Enter”键,直至生成公钥。 ssh-keygen -t rsa 如果创建公钥和私钥后(上图最下面部分),提示的用户名hadoop@后面不是本机别名(上图红色部分:如master),说明主机名称需要重新配置一次,然后记得重启,然后删除/.ssh目录下的公钥和私钥,重新生成,直到生成的密钥后缀是本机别名。 接着在Master节点上做如下配置,把id_rsa.pub追加到授权的key里面去。 cat ~/.ssh

python数据分析基础——合并数据集(concat)

走远了吗. 提交于 2020-03-02 21:28:04
应用场景:可以根据不同的轴做简单的融合 pd.concat(objs,axis=0,join='outer',join_axes=None,ignore_index=False,keys=None,levels=None,verify_integrity=False) 常用参数介绍:     objs 你要合并的数据(series或者dataframe或者列表),传入形式为列表或者字典;     axis 默认为0,即以行合并;为1时是以列合并。     join 默认为'outer',即取并集;join='inner'时为取交集。     keys axis=0时keys为可以创建一个层次化索引;axis=1时keys会成为dataframe 的列索引名。 来源: https://www.cnblogs.com/mmmmiles/p/12397919.html

python爬虫之selenium、phantomJs

蹲街弑〆低调 提交于 2020-03-02 20:01:18
图片懒加载技术 什么是图片懒加载技术 图片懒加载是一种网页优化技术。图片作为一种网络资源,在被请求时也与普通静态资源一样,将占用网络资源,而一次性将整个页面的所有图片加载完,将大大增加页面的首屏加载时间。为了解决这种问题,通过前后端配合,使图片仅在浏览器当前视窗内出现时才加载该图片,达到减少首屏图片请求数的技术就被称为“图片懒加载”。 如何实现图片懒加载技术 在网页源码中,在img标签中首先会使用一个“伪属性”(通常使用src2,original......)去存放真正的图片链接而并非是直接存放在src属性中。当图片出现到页面的可视化区域中,会动态将伪属性替换成src属性,完成图片的加载。 如何破解图片懒加载技术 其实很简单,在对标签属性进行定位的时候,仔细观察它真正的属性进行提取。 例如: import requests from lxml import etree def main(): responses = requests.get(url=url, headers=headers) coding = responses.apparent_encoding responses.encoding = coding res_text = responses.text # 创建etree对象 tree = etree.HTML(res_text) div_lst = tree

Perl 哈希

我的未来我决定 提交于 2020-03-02 19:05:58
哈希是 key/value 对的集合,Perl中哈希变量以百分号 (%) 标记开始。 访问哈希元素格式:${key}。 以下是一个简单的哈希实例: # ! / usr / bin / perl % data = ( 'google' , 'google.com' , 'runoob' , 'runoob.com' , 'taobao' , 'taobao.com' ) ; print "\$data{'google'} = $data{'google'}\n" ; print "\$data{'runoob'} = $data{'runoob'}\n" ; print "\$data{'taobao'} = $data{'taobao'}\n" ; 创建哈希 创建哈希可以通过以下两种方式: 一、为每个 key 设置 value $data { 'google' } = 'google.com' ; $data { 'runoob' } = 'runoob.com' ; $data { 'taobao' } = 'taobao.com' ; 二、通过列表设置 列表中第一个元素为 key,第二个为 value。 % data = ( 'google' , 'google.com' , 'runoob' , 'runoob.com' , 'taobao' , 'taobao.com' )

redis常用命令

一世执手 提交于 2020-03-02 08:27:39
1.1 Redis命令 ps -ef |grep redis 指定端口:bind 127.0.0.1 我们要注释掉,让所有端口都能进入。 1.1.1 redis-cli的使用之发送命令 默认连接:IP 127.0.0.1 端口 6379 redis-cli 指定IP端口: redis-cli –h 127.0.0.1 –p 6379 1.1.2 redis-cli的使用之命令返回值 状态回复(最简单的回复-redis提供的测试命令) redis>PING PONG 127.0.0.1:6379>INCR test_incr (integer) 1 字符串回复(最长久的一种回复,双引号包裹) 127.0.0.1:6379>get test “123” 多行字符串回复 127.0.0.1:6379>KEYS * 1) "test_incr" 2) "test" 1.1.3 redis数据库切换SELECT redis默认支持16个数据库,对外都是以一个从0开始的递增数字命名,可以通过参数database来修改默认数据库个数。客户端连接redis服务后会自动选择0号数据库,可以通过select命令更换数据库,例如选择1号数据库: 127.0.0.1:6379>SELECT 1 OK 127.0.0.1:6379>GET test (nil) 说明: Redis不支持自定义数据库名称。

php序列化(serialize)和反序列化(unserialize)函数

独自空忆成欢 提交于 2020-03-01 15:15:20
用法:serialize()、unserialize() 适用情境:serialize()返回字符串,此字符串包含了表示value的字节流,可以存储于任何地方。这有利于存储或传递 PHP 的值,同时不丢失其类型和结构。比较有用的地方就是将数据存入数据库或记录在文件中的时候. 可以对一般变量进行序列化,也可以对字典进行序列化。 <?php $array = array(); $array['keys'] = 'www'; $array['values']='11111'; $a = serialize($array); echo $a; unset($array); $a = unserialize($a); print_r($a); ?> 输出: a:2:{s:4:"keys";s:3:"www";s:6:"values";s:5:"11111";} Array ( [keys] => www [values] => 11111 ) 例题: bugku-Web flag.php 来源: https://www.cnblogs.com/RenoStudio/p/10355133.html