(?)企业部分之redis

author author     2022-07-31     145

关键词:

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/

技术分享


详解:

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    ##监控数据

技术分享

 

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

技术分享


要想永久的存入数据,可以在配置文件中写入。

 

 

文件目录: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

技术分享

vim /etc/php-fpm.d/www.conf

修改所属的用户和组为以下内容

 39 user = nginx

 41 group = nginx

 

/etc/init.d/php-fpm restart
vim /etc/nginx/conf.d/default.conf

在第10index后面添加index.php

取消掉30-36行的注释,将fastcgi_param后的目录改为/usr/share/nginx/html

技术分享

 

技术分享

cd /usr/share/nginx/html/
vim index.php

内容如下:

<?php

phpinfo()

?>

 

/etc/init.d/nginx start

网页访问http://172.25.45.1

技术分享

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

技术分享

 

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 [email protected] identified by ‘westos‘;
mysql> quit

技术分享

 

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(刷新两次)

技术分享

 

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

技术分享

 

mysql 
mysql> use test;
mysql> update test set name=‘westos‘ where id=1;
mysql> quit

技术分享


网页访问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(刷新两次)    ##更新 

技术分享

 

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

技术分享

 

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

技术分享

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

技术分享

 

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

技术分享

mysql 
mysql> show global variables like ‘plugin_dir‘;
mysql> quit

技术分享

 

cp lib_mysqludf_json.so /usr/lib64/mysql/plugin
mysql 
mysql> create function json_object returns string soname ‘lib_mysqludf_json.so‘;
mysql> select * from mysql.func;
mysql> quit

技术分享

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

技术分享

netstat -antlpe[object Object]
mysql 
mysql> select gman_servers_set(‘127.0.0.1:4730‘);
mysql> quit

 技术分享


cd /root/redis
vim test.sql

将触发器的注释取消,在建表和插入数据语句前加上注释

技术分享

mysql < test.sql
mysql
mysql> show triggers from test;
mysql> quit

技术分享

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

技术分享

 

mysql
mysql> use test;
mysql> update test set name=‘redhat‘ where id=1;
mysql> quit

 

网页访问http://172.25.19.1(刷新)##更新

技术分享

 

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

技术分享

 

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

技术分享


/etc/init.d/redis_6379 restart

此时用redis-cli进行测试,查看server1中的数据是否同步到server2server3中,更改值是否可以同步。

技术分享

技术分享

技术分享

 

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

技术分享

 

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

技术分享

scp /etc/sentinel.conf [email protected]:/etc/

scp /etc/sentinel.conf [email protected]:/etc/

 

技术分享

 

redis-cli -h 172.25.45.1 -p 26379 info

技术分享


server2

vim /etc/sentinel.conf

删除sentinel failover-timeout mymaster 60000之后的部分,并在这后面添上以下内容:

sentinel parallel-syncs mymaster 1
scp /etc/sentinel.conf [email protected]:/etc/
redis-sentinel /etc/sentinel.conf

技术分享


server1:redis-cli -h 172.25.45.1 -p 26379 info

技术分享


server3

redis-sentinel /etc/sentinel.conf


技术分享


server1:redis-cli -h 172.25.45.1 -p 26379 info

技术分享

 

测试:

server1

/etc/init.d/redis_6379 stop

技术分享


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

技术分享


技术分享


技术分享


技术分享



 

 


nosql之redis---持久化(persistence)概念原理

...令中还有关于服务器的命令我们未做介绍,是由于其中的部分命令涉及持久化,集群等方面的内容。因此,本文我们就先来看看持久化部分的内容。好了,废话不表,马上开始我们的正文部分吧!------------------------------------------... 查看详情

redis之学习-键值操作

接下来有redis一些常用命令的学习,但是有部分是我们生产环境禁用的,会影响性能,不符合redis开发规范,大家可以自行搜索阿里redis开发规范进行借鉴与学习1,keyspattern通用键查询在redis里,允许模糊查询key有3个通配符,?,[]:通... 查看详情

springboot进阶之缓存中间件redis

...,大部分公司都会首选它作为开发框架,而至今,大部分企业都是以springboot来构建项目了,一个稳健的系统需要引入稳定的技术~如果你是一路看过来的,很高兴你能够耐心看完。前几期都是带大家学习了SpringBoot的基础使用以及... 查看详情

redis主从之全量复制和增量复制

...在必要的情况下才做全量复制,比如初次复制和其他无法部分复制用于初次复制或其它无法进行部分复制的情况,将主节点中的所有数据都发送给从节点。当数据量过大的时候,会造成很大的网络开销。用于处理在主从复制中因... 查看详情

redis源码剖析-redis之事务的实现原理(代码片段)

...析系列文章汇总:传送门今天为大家带来Redis中事务部分的源码分析。Redis的事务机制允许将多个命令当做一个独立的单元运行,主要包括multi、exec、watch、unwatch、discar 查看详情

企业it架构转型之道读后感

放假三天,用部分时间阅读了企业IT架构转型之道这本书。第一遍潦草读完,就感觉收益颇多。这本书值得多读几遍,适合精度。作为银行IT开发人员,在央企IT成本部门的大背景下,开发过程中遇到的诸多疑惑、困惑逐渐累积在... 查看详情

kubernetes之configmap配置(代码片段)

...    如启用一个redis容器,redis容器重要的文件有两部分,一部分为存储数据文件,一部分为配置文件redis.conf,存储数据可以用持久存储实现和容器的分离解耦,配置文件也能够实现和容器的分离解耦,也就是说redis容器... 查看详情

缓存系列之三:redis安装及基本数据类型命令使用

...s是一个开源的key-value存储系统。与Memcached类似,Redis将大部分数据存储在内存中,支持的数据类型包括:字符串、哈希表、链表、集合、有序集合以及基于这些数据类型的相关操作。Redis使用C语言开发,在大多数像Linux、BSD和Sola... 查看详情

项目管理之项目章程

...的。)三、项目目标(这部分将明确说明目标与企业目标的关系。)企业目标项目目标四、项目范围(这部分的详细程度必须充分考虑到项目计划编 查看详情

项目管理之项目章程

...的。)三、项目目标(这部分将明确说明目标与企业目标的关系。)企业目标项目目标四、项目范围(这部分的详细程度必须充分考虑到项目计划编 查看详情

开放平台之安全(代码片段)

什么是开放平台开放平台就是将企业中的业务的核心部分经过抽象和提取,形成面向企业或者面向用户的增值系统,为企业带来新的业务增涨点。因为是企业的核心业务能力,所以平台的安全性就成为重中之重。安全方案普通的... 查看详情

aws企业实战之cloudfront的配置

对于本文,开始并不打算写出来,因为aws有非常详细的官方文档,但是对于我本人在使用过程中的体会来说,官网文档并不好理解和阅读,英文难啃,而中文翻译往往又不是完全正确,往往给学习带来误解,有甄别能力的童鞋或... 查看详情

rediscluster初探之部署(代码片段)

...据根据分区规则划分到多个节点上,每个节点负责存储一部分数据;常用的分区规则有哈希分区与顺序分区两种,两种方式各有优势,redis集群使用的是哈希分区的虚拟槽分区方式redis集群采用的虚拟槽分区,所有的键通过计算... 查看详情

mbos之动态图表设计

...表。Mbos是一个快速,稳定的云端轻应用开发平台。帮助企业快速开发移动应用,加快企业工作效率,为企业创造更多的效益。mbos移动设计器,可以在线进行界面设计,发布成移动云之家轻应用,方便开发,快捷交付!其中,移... 查看详情

实践|mes系统之设备管理的基础功能

MES是现在和将来企业生产不可或缺的一部分,它是生产活动的物质技术基础,决定着企业生产效率和质量。对于制造企业来说,加强设备管理显得尤为重要。只有设备管理加强了,才能维持正常的生产秩序,提高企业的活力和生... 查看详情

云计算之kvm虚拟化最佳实践

....云计算出现的背景  在云计算出现之前,大部分企业的数据服务的数据中心一般是以IDC托管的形式,一般企业买设备放到IDC机房托管,然后安装系统,部署服务,购买域名绑定,到外网访问的一系列的流程过程。  ... 查看详情

redis之unabletoconnecttolocalhost:6379(代码片段)

...带命令的命令替换了,替换\\software\\Redis-x64-3.2.100这部分即可。d:cd\\software\\Redis-x64-3.2.100.\\redis-server.exe.\\red 查看详情

河北用友软件之正确的erp系统可以帮助企业省钱又赚钱

河北用友软件之正确的ERP系统可以帮助企业省钱又赚钱正确的ERP系统是可以帮助企业省钱又赚钱的工具有部分中小企业的管理层认为只有企业达到一定规模后,才具备实施ERP的必要性,其实这是一种自然发展状态,是自由型的管... 查看详情