设为首页 收藏本站
查看: 1457|回复: 0

[经验分享] (二十)企业部分之redis-Linux整理

[复制链接]

尚未签到

发表于 2018-11-5 08:26:12 | 显示全部楼层 |阅读模式
  Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。 它支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 与范围查询, bitmaps, hyperloglogs 和 地理空间(geospatial) 索引半径查询。 Redis 内置了 复制(replication),LUA脚本(Lua scripting), LRU驱动事件(LRU eviction),事务(transactions) 和不同级别的 磁盘持久化(persistence), 并通过 Redis哨兵(Sentinel)和自动 分区(Cluster)提供高可用性(high availability)。
  原理整理后补
  1.
yum install -y mysql-server  
/etc/init.d/mysqld start
  
netstat -antlpe    ##mysql端口3306已开
  所需软件包:redis-3.0.2.tar.gz
tar zxf redis-3.0.2.tar.gz  
cd redis-3.0.2
  
yum install -y gcc
  
make
  
make install    ##不需要make test这一步骤,可以直接通过使用测试。make test 需要进到src/下,并装tcl
  ls /usr/local/bin/
DSC0000.png

  详解:
  redis-server: Redis服务主程序。
  redis-cli: Redis 客户端命令行工具,也可以用 telnet 来操作。
  redis-benchmark: Redis 性能测试工具,用于测试读写性能。
  redis-check-aof:检查 redis aof 文件完整性,aof 文件持久化记录服务器执行的所有写操作命令,用于还原数据。
  redis-check-dump:检查 redis rdb 文件的完整性,rdb 就是快照存储,即按照一定的策略周期性的将数据保存到磁盘,是默认的持久化方式。
  redis-sentinel:集群管理工具,主要负责主从切换。
cd utils/  
./install_server.sh
  
/etc/init.d/redis_6379 restart
  
netstat -antlpe
redis-cli monitor    ##监控数据
DSC0001.png

redis-cli    ##临时,重启数据消失
DSC0002.png

  要想永久的存入数据,可以在配置文件中写入。
  文件目录:redis
cd /root/redis  
yum install -y nginx-1.8.0-1.el6.ngx.x86_64.rpm  php-*
  
php -m    ##看到支持的软件
vim /etc/php.ini  修改timezone
  date.timezone = Asia/Shanghai
/etc/init.d/php-fpm start  
netstat -antlpe
DSC0003.png

vim /etc/php-fpm.d/www.conf  修改所属的用户和组为以下内容
  39 user = nginx
  41 group = nginx
/etc/init.d/php-fpm restartvim /etc/nginx/conf.d/default.conf  在第10行index后面添加index.php
  取消掉30-36行的注释,将fastcgi_param后的目录改为/usr/share/nginx/html
DSC0004.png

DSC0005.png

cd /usr/share/nginx/html/vim index.php  内容如下:
  
/etc/init.d/nginx start  网页访问http://172.25.45.1
DSC0006.png

  2.
cd /root/redis  
yum install -y unzip
  
unzip phpredis-master.zip
cd phpredis-master  
phpize
  
./configure
  
make
  
make install
cd /usr/lib64/php/modules/  
ls
  
cd /etc/php.d
  
cp mysql.ini redis.ini
vim redis.ini  将内容修改为以下:
  extension=redis.so
/etc/init.d/php-fpm reload  
php -m | grep redis
DSC0007.png

mysql  
mysql> show databases;    ##默认有一个test数据库,如没有则创建一个。
  
mysql> quit
cd /root/redis  
mysql < test.sql
mysql  
mysql> use test;
  
mysql> select * from test;
  
mysql> grant all on *.* to redis@localhost identified by 'westos';
  
mysql> quit
DSC0008.png

mysql -uredis -pwestos  
mysql> use test;
  
mysql> select * from test;
  
mysql> quit
cp /root/redis/test.php /usr/share/nginx/html/  
cd /usr/share/nginx/html/
  
rm -rf index.php
  
mv test.php index.php
  网页访问http://172.25.45.1(刷新两次)
DSC0009.png

  redis-cli
  127.0.0.1:6379> get 1
  "test1"
  127.0.0.1:6379> get 2
  "test2"
  127.0.0.1:6379> get 3
  "test3"
  127.0.0.1:6379> quit
DSC00010.png

mysql  
mysql> use test;
  
mysql> update test set name='westos' where id=1;
  
mysql> quit
DSC00011.png

  网页访问http://172.25.45.1(刷新)    ##值不变,不更新
redis-cli  
127.0.0.1:6379> get 1
  
"test1"
  
127.0.0.1:6379> del 1
  
(integer) 1
  网页访问http://172.25.45.1(刷新两次)    ##更新
DSC00012.png

redis-cli  
127.0.0.1:6379> get 1    ##网页刷新过后才有
  
"westos"
  
127.0.0.1:6379> quit
DSC00013.png

  3.
cd /root/redis  
yum install -y gearmand-1.1.8-2.el6.x86_64.rpm libgearman-1.1.8-2.el6.x86_64.rpm
  
/etc/init.d/gearmand start
  
netstat -antlpe
DSC00014.png

tar zxf gearman-1.1.2.tgz  
cd gearman-1.1.2
  
phpize
  
./configure
  
cd ..
  
yum install -y libgearman-devel-1.1.8-2.el6.x86_64.rpm  libevent-devel-1.4.13-4.el6.x86_64.rpm libevent-doc-1.4.13-4.el6.noarch.rpm  libevent-headers-1.4.13-4.el6.noarch.rpm
cd gearman-1.1.2  
./configure
  
make
  
make install
cd /etc/php.d  
cp redis.ini gearman.ini
vim gearman.ini  将内容修改为以下:
  extension=gearman.so
/etc/init.d/php-fpm reload  
php -m |grep gearman
DSC00015.png

yum install -y mysql-devel  
cd /root/redis
  
unzip lib_mysqludf_json-master.zip
  
cd lib_mysqludf_json-master
  
gcc $(mysql_config --cflags) -shared -fPIC -o lib_mysqludf_json.so lib_mysqludf_json.c    ##将lib_mysqludf_json.c编译为lib_mysqludf_json.so输出
  
ls
DSC00016.png

mysql  
mysql> show global variables like 'plugin_dir';
  
mysql> quit
DSC00017.png

cp lib_mysqludf_json.so /usr/lib64/mysql/pluginmysql  
mysql> create function json_object returns string soname 'lib_mysqludf_json.so';
  
mysql> select * from mysql.func;
  
mysql> quit
DSC00018.png

cd /root/redis  
tar zxf gearman-mysql-udf-0.6.tar.gz
cd gearman-mysql-udf-0.6  
yum install -y gcc-c++
  
./configure --libdir=/usr/lib64/mysql/plugin/
  
make
  
make install
cd /usr/lib64/mysql/plugin/mysql  
mysql> create function gman_do_background returns string soname 'libgearman_mysql_udf.so';
  
mysql> create function gman_servers_set returns string soname 'libgearman_mysql_udf.so';
  
mysql> select * from mysql.func;
  
mysql> quit
DSC00019.png

netstat -antlpe[object Object]mysql  
mysql> select gman_servers_set('127.0.0.1:4730');
  
mysql> quit
DSC00020.png

cd /root/redisvim test.sql  将触发器的注释取消,在建表和插入数据语句前加上注释
DSC00021.png

mysql < test.sqlmysql  
mysql> show triggers from test;
  
mysql> quit
DSC00022.png

cp worker.php /usr/local/bin/  
cd /usr/local/bin/
  
nohup php worker.php  &##后台运行worker
  
ps ax
DSC00023.png

mysql  
mysql> use test;
  
mysql> update test set name='redhat' where id=1;
  
mysql> quit
  网页访问http://172.25.19.1(刷新)##更新
DSC00024.png

redis-cli  
127.0.0.1:6379> get 1
  
"redhat"
  
127.0.0.1:6379> quit
DSC00025.png

  4.用slaveof实现主从复制
  【server2/server3】
  所需软件包:redis-3.0.2.tar.gz
tar zxf redis-3.0.2.tar.gz  
cd redis-3.0.2
  
yum install -y gcc
  
make
  
make install
cd utils/  
./install_server.sh
vim /etc/redis/6379.conf  添加以下内容:
  slaveof 172.25.45.1 6379
DSC00026.png

/etc/init.d/redis_6379 restart  此时用redis-cli进行测试,查看server1中的数据是否同步到server2和server3中,更改值是否可以同步。
DSC00027.png

DSC00028.png

DSC00029.png

  5.用sentinel实现集群切换
  【server1】
vim /root/redis-3.0.2/sentinel.conf  第53行,将IP改为172.25.45.1(本机IP)
  第82行,将30000改为10000
  第115行,将180000改为60000
grep -v ^# sentinel.conf
DSC00030.png

grep -v ^# sentinel.conf > /etc/sentinel.conf  
redis-sentinel /etc/sentinel.conf
DSC00031.png

  scp /etc/sentinel.conf root@172.25.45.2:/etc/
  scp /etc/sentinel.conf root@172.25.45.3:/etc/
DSC00032.png

  redis-cli -h 172.25.45.1 -p 26379 info
DSC00033.png

  【server2】
vim /etc/sentinel.conf  删除sentinel failover-timeout mymaster 60000之后的部分,并在这后面添上以下内容:
sentinel parallel-syncs mymaster 1scp /etc/sentinel.conf root@172.25.45.3:/etc/redis-sentinel /etc/sentinel.conf
DSC00034.png

server1:redis-cli -h 172.25.45.1 -p 26379 info
DSC00035.png

  【server3】
redis-sentinel /etc/sentinel.conf
DSC00036.png

server1:redis-cli -h 172.25.45.1 -p 26379 info
DSC00037.png

  测试:
  【server1】
/etc/init.d/redis_6379 stop
DSC00038.png

/etc/init.d/redis_6379 start  
redis-cli -h 172.25.45.1 -p 26379 info
DSC00039.png

DSC00040.png

DSC00041.png

DSC00042.png




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-630877-1-1.html 上篇帖子: 键值存储之redis-linux札记 下篇帖子: 使用redis订阅/发布创建简单聊天室
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表