门户网站目标客户,公司网站制作公司倒闭,中文域名有哪些网站,网站建好更新1 Redis 概述 REmote DIctionary Server(Redis)是一个基于key-value键值对的持久化数据库存储系统。redis和大名鼎鼎的Memcached缓存服务软件很像#xff0c;但是Redis支持的数据存储类型比Memcached更丰富#xff0c;包括strings#xff08;字符串#xff09;、lists…1 Redis 概述 REmote DIctionary Server(Redis)是一个基于key-value键值对的持久化数据库存储系统。redis和大名鼎鼎的Memcached缓存服务软件很像但是Redis支持的数据存储类型比Memcached更丰富包括strings字符串、lists列表、sets集合和sorted sets有序集合等 这些数据类型支持push/pop、add/remove及取交集、并集和差集及更丰富的操作而且这些操作都是原子性的。在此基础上redis支持各种不同方式的排序。与memcached缓存服务一样为了保证效率数据都是缓存在内存中提供服务。和memcached不同的是redis持久化缓存服务还会周期性的把更新的数据写入到磁盘以及把修改的操作记录追加到文件里记录下来比Memcached更有优势的是redis还支持master-slave主从同步这点很类似关系型数据库MySQL主从复制功能 Redis是一个开源的使用C语言编写、支持网络、可基于内存亦可持久化的日志型、key-value数据库并提供多种语言的API。从2010年3月15日起Redis的开发工作由VMware主持 Redis软件的出现在一定程度上弥补了memcached这类key-value内存缓存服务的不足在部分场合可以对关系数据库起到很好的补充作用。redis提供了PythonRubyErlangPHP客户端使用起来很方便。Redis官方文档如下 https://redis.io/documentation http://redis.cn/ 1.1 Redis优点 与memcached不同Redis可以持久化存储数据性能很高Redis能支持超过10W美妙的读写频率丰富的数据类型Redis支持二进制的StringsListsHashesSets及sorted Sets等数据类型原子Redis的所有操作都是原子性同时Redis还支持对几个操作全并后的原子性执行丰富的特性Redis还支持publish/subscribe发布/订阅通知key过期等等特性Redis支持异机主从复制 1.2 缺点 系统运行有毛刺不同命令延迟差别极大内存管理开销大buffer io造成OOM 1.3 Redis的数据类型 String 字符串List 列表Set 集合Sorted set 有序集合 2 Redis的安装及使用 Redis的生产经验教训 要进行Master-slave主从同步配置在出现服务故障时可以切换在master禁用数据持久化只需在slave上配置数据持久化物理内存虚拟内存不足这个时候dump一直死这时间久了机器挂掉。这个情况就是灾难64-128G内存SSD硬盘当Redis物理内存使用超过内存总容量的3/时就会开始比较危险了就开始做SWAP内存碎片打当达到最大内存时会清空带有过期时间的key及时key未到过期时间redis与DB同步写的问题先写DB厚些redis因为写内存基本上没有问题 2.1 redis环境部署 Master10.0.0.1 Centos6.5 Redis-Master2.2 安装 #Master
[rootRedis-Master downloads]# wget http://download.redis.io/releases/redis-3.2.4.tar.gz
[rootRedis-Master downloads]# tar zxf redis-3.2.4.tar.gz
[rootRedis-Master downloads]# cd redis-3.2.4
[rootRedis-Master redis-3.2.4]# make PREFIX/usr/local/redis install
#查看目录
[rootRedis-Master redis-3.2.4]# ls /usr/local/redis/bin/
redis-benchmark redis-check-aof redis-check-rdb redis-cli redis-sentinel redis-server
#只有这一个bin目录
#redis-serverRedis服务器的daemon启动程序
redis-cliRedis命令行操作工具。当然你也可以用telnet根据其纯文本协议来操作
redis-benckmarkRedis性能测试工具测试Redis在你的系统及你的配置下的读写性能
redis-check-aof对更新日志appendonly.aof检查是否可用类似检查mysql binlog的工具
redis-check-dump用于本地数据库rdb文件的检查2.3 配置并启动redis服务 1、配置环境变量
[rootRedis-Master /]# echo PATH/usr/local/redis/bin/:$PATH /etc/profile
[rootRedis-Master /]# source /etc/profile
2、拷贝配置文件
[rootRedis-Master /]# cd /tmp/downloads/redis-3.2.4
[rootRedis-Master redis-3.2.4]# mkdir /usr/local/redis/conf
[rootRedis-Master redis-3.2.4]# cp redis.conf /usr/local/redis/conf/
3、启动
[rootRedis-Master /]# echo vm.overcommit_memory 1 /etc/sysctl.conf
[rootRedis-Master /]# sysctl -p #以防后台保存失败
[rootRedis-Master /]# redis-server /usr/local/redis/conf/redis.conf
#vm.overcommit_memory该参数有三个值分别是
0当用户空间请求更多的内存时内核尝试估算出剩余可用的内存
1当设这个参数值为1时内核允许超量使用内存知道用完为止主要用于科学计算
2当设这个参数值为2时内核会使用一个绝不过量使用内存的算法即系统整个内存地址空间不能超过swap50%的RAM值50%参数的设定是在overcommit_ratio中设定
4、关闭
[rootRedis-Master /]# redis-cli shutdown save2.4 通过客户端来操作redis数据库 1、存值
[rootRedis-Master /]# redis-cli
127.0.0.1:6379 set id 001
OK
2、取值
127.0.0.1:6379 get id #可以get ket无法get value
001
3、删除
127.0.0.1:6379 del id #删除key
(integer) 1
4、查看是否存在
127.0.0.1:6379 EXISTS id
(integer) 0 #0为不存在
5、取所有
127.0.0.1:6379 keys *#redis默认有16个库0为开头#远程连接
[rootRedis-Master /]# redis-cli -h 10.0.0.1 -p 6379 #可以设置密码跟mysql很像
10.0.0.1:6379#telnet和nc都可以操作2.5 redis的安全账户密码及授权权限 [rootRedis-Master /]# cat /usr/local/redis/conf/redis.conf |grep requirepass
# If the master is password protected (using the requirepass configuration
# requirepass foobared
requirepass 123.com
格式[ requirepass ] [ password ]
#123.com就是密码
#重启redis#测试
127.0.0.1:6379 set 1 daniel
(error) NOAUTH Authentication required.
#提示没认证
127.0.0.1:6379 auth 123.com
OK
#登录
127.0.0.1:6379 set 1 daniel
OK
#再次测试成功#或者
[rootRedis-Master /]# redis-cli -a 123.com
127.0.0.1:6379
#可以直接输入密码后进入#命令重命名
[rootRedis-Master /]# grep rename-command /usr/local/redis/conf/redis.conf
# security of read only slaves using rename-command to shadow all the
# rename-command CONFIG b840fc02d524045429941cc15f59e41cb7be6c52
# rename-command CONFIG
rename-command set se
#格式 [ rename-command ] [ CONFIG ] [ ]
#测试
[rootRedis-Master /]# redis-cli -a 123.com
127.0.0.1:6379 set 2 cat
(error) ERR unknown command set
127.0.0.1:6379 se 2 cat
OK
#set无法使用se可以2.7 在php环境中安装redis的客户端扩展 [rootRS02 downloads]# wget https://codeload.github.com/phpredis/phpredis/zip/develop
[rootRS02 downloads]# unzip develop
[rootRS02 downloads]# cd phpredis-develop/
[rootRS02 phpredis-develop]# /usr/local/php5.6.33/bin/phpize
[rootRS02 phpredis-develop]# ./configure --with-php-config/usr/local/php5.6.33/bin/php-config
[rootRS02 phpredis-develop]# make make install#修改php.ini重启php
[rootRS02 php5.6.33]# sed -i s#; extension_dir ./#extension_dir /usr/local/php5.6.33/lib/php/extensions/no-debug-non-zts-20131226/#g /usr/local/php5.6.33/lib/php.ini
[rootRS02 php5.6.33]# echo extension redis.so /usr/local/php5.6.33/lib/php.ini
[rootRS02 php5.6.33]# /usr/local/php5.6.33/sbin/php-fpm#出现这个信息就算正确 2.8 开发php程序实战redis服务 #开启redis的远程连接
[rootRedis-Master /]# sed -i s/bind 127.0.0.1/#bind 127.0.0.1/g /usr/local/redis/conf/redis.conf
#重启
[rootRS02 php5.6.33]# cat /usr/local/nginx/html/index.php
?php$redis new Redis();$redis-connect(10.0.0.1,6379) or die (heh);$redis-auth(123.com);$redis-set(100,DANIEL);$var $redis-get(100);echo $var\n;
?
[rootRedis-Master /]# curl 10.0.0.81
DANIEL
成功2.9 开发python程序实战操作redis服务 转载于:https://www.cnblogs.com/wazy/p/8545438.html