1. 安全性:为Redis添加密码
警告:因为redis 速度相当快,所以在一台比较好的服务器下,一个外部的用户可以在一秒钟进行150K 次的密码尝试,这意味着你需要指定非常非常强大的密码来防止暴力破解。
进入配置文件
vim /usr/local/redis/etc/redis.conf
requirepass 密码明文
重启redis服务
登录(两种)
./redis-cli auth 密码值
推荐,不会在history中遗留密码明文
./redis-cli -a 密码
2. 主从复制
Redis主从复制特点:
Master可以拥有多个slave
多个slave可以连接同一个master外,还可以连接到其它slave
主从复制不会阻塞master,在同步数据时,master可以继续处理client请求
提高系统的伸缩性
Redis主从复制过程:
Slave与master建立连接,发送sync同步命令
Master会启动一个后台进程,将数据库快照保存到文件中,同时master主进程会开始收集新的写命令并缓存。
后台完成保存后,就将此文件发送给slave
Slave将此文件保存到硬盘上
1. 不同服务器配置主从
修改从服务器redis配置文件
vim /usr/local/redis/etc/redis.conf
slaveof <masterip> <masterport>
#把此句开启,并指定主服务器ip和端口
masterauth 主机密码明文
#设定主服务器密码
重启从redis服务器
2. 同一台服务器实现主从配置
复制出从服务器目录
cp -r /usr/local/redis/ /usr/local/redis-slave1
修改redis-slave1配置文件
vim /usr/local/redis-slave1/etc/redis.conf
pidfile /usr/local/redis-slave1/redis.pid
#指定pid文件
port 63791
#指定端口号
dir /usr/local/redis-slave1/
#指定服务器目录
slaveof 127.0.0.1 6379
#指定主服务器IP和端口
masterauth 主机密码明文
#指定主服务器密码
启动redis服务
[root@localhost ~]# netstat -tlun
tcp 0 0 :::6379 :::* LISTEN
tcp 0 0 :::63791 :::* LISTEN
#验证两个端口是否都启动
4.验证
主从两台数据是否能即时同步
3. 事务处理
>multi //开启一个事务
>set age 10 //暂存指令队列
>set age 20
>exec //开始执行(提交事务)
或>discard //清空指令队列(事务回滚)
4. 乐观锁
在事务前对被操作的属性做一个:
> watch age
>multi //开启一个事务(在此期间有其他修改,则此处会失败)
>set age 10 //暂存指令队列
>set age 20
>exec //开始执行(提交事务)
或>discard //清空指令队列(事务回滚)
5. 持久化机制(通过修改配置文件做设置)
1. snapshotting(快照)默认方式
配置 save
save 900 1 #900秒内如果超过1个key被修改,则发起快照保存
save 300 10 #300秒内容如超过10个key被修改,则发起快照保存
save 60 10000
2. Append-only file(aof方式)
配置 appendonly on 改为yes
会在bin目录下产生一个.aof的文件
关于aof的配置
appendonly yes //启用aof 持久化方式
# appendfsync always //收到写命令就立即写入磁盘,最慢,但是保证完全的持久化
appendfsync everysec //每秒钟写入磁盘一次,在性能和持久化方面做了很好的折中
# appendfsync no //完全依赖os,性能最好,持久化没保证
6. 发布及订阅消息
需要开启多个会话端口
会话1:>subscribe tv1 //监听tv1频道
会话2:>subscribe tv1 tv2 //监听tv1和tv2频道
会话3: >publish tv1 消息 //向tv1频道发送一个消息
7. 使用虚拟内存
在redis配置文件中设置
vm-enabled yes #开启vm功能
vm-swap-file /tmp/redis.swap #交换出来的value保存的文件路径
vm-max-memory 1000000 #redis使用的最大内存上限
vm-page-size 32 #每个页面的大小32字节
vm-pages 134217728 #最多使用多少页面
vm-max-threads 4 #用于执行value对象换入患处的工作线程数量
8. 集群(>3.0.0 )
需求:三个主节点,三个从节点对应节点与端口关系如下
127.0.0.1:7000
127.0.0.1:7001
127.0.0.1:7002
127.0.0.1:7003
127.0.0.1:7004
127.0.0.1:7005
- 创建集群(cluster)目录
mkdir -p /usr/local/cluster
cd /usr/local/cluster
mkdir 7000
mkdir 7001
mkdir 7002
mkdir 7003
mkdir 7004
mkdir 7005
- 修改配置文件
cp /root/redis-3.0.0/redis.conf /usr/local/cluster/
vi redis.conf
修改配置文件下面选项
port 7000
daemonize yes
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes
修改完将此文件拷贝至每个子目录下
cp /usr/local/cluster/redis.conf /usr/local/cluster/7000
cp /usr/local/cluster/redis.conf /usr/local/cluster/7001
cp /usr/local/cluster/redis.conf /usr/local/cluster/7002
cp /usr/local/cluster/redis.conf /usr/local/cluster/7003
cp /usr/local/cluster/redis.conf /usr/local/cluster/7004
cp /usr/local/cluster/redis.conf /usr/local/cluster/7005
注意:拷贝完后,修改每个文件的端口号,与目录名对应。
- 启动6个redis服务
cd /usr/local/cluster/7000/
redis-server redis.conf
cd /usr/local/cluster/7001/
redis-server redis.conf
cd /usr/local/cluster/7002/
redis-server redis.conf
cd /usr/local/cluster/7003/
redis-server redis.conf
cd /usr/local/cluster/7004/
redis-server redis.conf
cd /usr/local/cluster/7005/
redis-server redis.conf
- 执行redis命令创建集群
cd /installpath/src/
./redis-trib.rb create --replicas 1 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005
切换至src目录执行创建集群命令
排错,ruby脚本无ruby环境。
yum -y install ruby rubygems //软件包分别在两个镜像盘中
gem install redis
再次执行步骤4
交互输入yes
- 登陆
redis-cli -c -p 7000
7000 和 7003 为主从
7001 和 7004 为主从
7002 和 7005 为主从
主与主之间随机分配主
PHP操作Redis数据库
Redis扩展安装
常见redis客户端扩展http://redis.io/clients#php,选用最流行的phpredis。
Linux环境安装
下载模块:
wget https://github.com/nicolasff/phpredis/archive/master.zip
下载后模块文件名为master(使用file master查看zip类型,用unzip解压)
解压
$ unzip master
或
$ unzip phpredis-master.zip
安装
cd phpredis-master
/usr/local/php/bin/phpize
建立php外挂模块文件
./configure --with-php-config=/usr/local/php/bin/php-config
make && make install
修改配置
vi /usr/local/php/etc/php.ini
添加extension=“redis.so”
重启apache
phpinfo可见redis模块
<?php
$redis=new Redis();
$redis->connect('127.0.0.1',6379); //连接
$redis->auth('youpassword'); //如果没有配置密码,则不需这步
$redis->set('test','hello redis');
echo $redis->get('test');
wamp环境安装
phpinfo检测是否开启
php扩展目录 extension_dir
php_redis.dll放置到php扩展目录下
php配置文件修改
extension=php_redis.dll
重启服务
PHP操作Redis
$redis=new Redis(); 创建Redis对象
$redis->connect("localhost"); 连接Redis服务器
$redis->auth("123"); 使用密码做登陆验证
Redis的数据应用设计
个人推荐:
Hash类型:适合做数据缓存
List类型:适合做数组搜索
集合类型:适合做好友推送
有序集合类型:适合商品排序
网友评论