Rdis优点
1、与memcached不同,Redis 可以持久化存储数据。
2、性能很高:Redis能支持超过10w每秒的读写频率。
3、丰富的数据类型:Redis支持二进制的String,List,Hashes,Sets及sorted Sets等数据类型操作。
4、原子:Redis的所有操作都是原子的。
5、丰富的特效:Redis还支持publish/subscribe(发布/订阅),通知,key过期等等特性。
6、redis支持异机主从复制。
Redis缺陷与陷阱
1、不同命令延迟差别极大
2、内存管理开销大。
Redis 应用场景
http://blog.nosqlfan.com/html/2235.html
Redis安装
将软件安装在home/tanzhang/tools 目录
cd /home/tanzhang/tools
wget http://download.redis.io/releases/redis-3.2.2.tar.gz
tar xf redis-3.2.2.tar.gz
cd redis-3.2.2
make 用make安装
make PREFIX=/application/redis-3.2.2 install PREFIX安装路径
ln -s/application/redis-3.2.2/ /application/redis 建立ln文件 类似与快捷方式,对ln文件操作就是对源文件操作。
命令执行完毕后会在/application/redis/bin出现以下目录
redis-server: Redis服务器daemon启动程序
redis-cli : 命令执行工具,相当于客户端redis-benchmark: 性能测试工具。
redis-check-aof: 对更新日志appendonly.aof检查,是否可用。
redis-check-dump:用于本地数据库rdb文件的检查。
配置环境变量
echo 'PATH=/application/redis/bin/:$PATH' >> /etc/profile
tail -1 /etc/profile
. /etc/profile或者 source /etc/profile
which redis-server 查看配置是否成功
redis-server –h 查看帮助
mkdir /application/redis/conf 创建
[root@bzhang redis-3.2.2] cp redis.conf/application/redis/conf/ 将 redis-3.2.2目录文件拷入
[root@bzhang redis-3.2.2]# redis-server/application/redis/conf/redis.conf & 启动&后台启动
lsof -i :6379 lsof list open file -i 用以显示符合条件的进程情况sysctl vm.overcommit_memory=1
vi /etc/sysctl.conf
将vm.overcommit_memory = 1放在最后
sysctl –p
vm.overcommit_memory 参数
0 默认,当用户空间请求更多的内存时,内核尝试估算剩余可用的内存。
1 内核允许超量使用内存直到用完为止,主要用于科学计算。
2:内存会使用一个绝不过量使用的内存算法,即系统整个内存地址空间不能超过swap+50%的RAM值。
===========可不配置====================
redis-cli shutdown 关闭
redis-cli 进入redis 参数 -h [ip] -p[port] -a[密码]
两种进入方式
[tanzhang@bzhang ~]$redis-cli -h 127.0.0.1 -p 6379
[tanzhang@bzhang ~]$ telnet 127.0.0.1 6379
Redis操作(部分)
select 0 切换到第1个数据库 (默认16个库)
auth [密码]
set [key] [value] 放入键值
get [key] 获取值
exists [key] 键是否存在
keys* 所有key
flushdb 刷新当前库
flushall 刷新所有库
刷新会删除所有数据
help 查看命令 help set 查看数据类型 help@string
quit 退出
Redis 安全
为redis客户端设置外部连接密码
vim /application/redis/conf/redis.conf 修改配置文件
requirepass tanzhang 添加访问密码
重启
[root@bzhang ~]# redis-cli shutdown
[root@bzhang ~]# redis-server/application/redis/conf/redis.conf &
进入redis
[root@bzhang ~]# redis-cli
127.0.0.1:6379> set a 001
(error) NOAUTH Authentication required.
127.0.0.1:6379> AUTH tanzhang
OK
127.0.0.1:6379> set aa 001
OK
[root@bzhang ~]#redis-cli -a tanzhang 可以直接用密码登录
对命令进行改名或禁用(一般不会改)
vi /application/redis/conf/redis.conf
rename-command get "" 禁用get
rename-command set bo 将set命令改为bo
redis-cli -a tanzhang shutdown 关闭
redis-server/application/redis/conf/redis.conf &
127.0.0.1:6379> auth tanzhang
OK
127.0.0.1:6379> set aa 12
(error) ERR unknown command 'set'
127.0.0.1:6379> bo aa 12
OK
127.0.0.1:6379> get aa
(error) ERR unknown command 'get'
127.0.0.1:6379>
Redis多实例
创建三个数据存放目录
mkdir /data/redis/6379/data –p
mkdir /data/redis/6380/data –p
mkdir /data/redis/6381/data –p
复制配置文件到对应的端口命名的文件夹下
cp /application/redis/conf/redis.conf/data/redis/6379/
cp /application/redis/conf/redis.conf/data/redis/6380/
cp /application/redis/conf/redis.conf/data/redis/6381/
将配置文件内的端口改成相应的端口,数据存放目录改成相应的目录。
例如 port 6380 dir /data/redis/6380/data/
redis-server /data/redis/6380/redis.conf & 启动时修改下配置文件即可。
redis-cli -p 6380 连接时指定下端口
Redis主从同步
以master为写操作,slave为读操作。master上的写操作都会同步到slave上。
配置
用6379实例作为master 用6380实例作为slave
配置6380配置文件
# slaveof
slaveof 192.168.26.132 6379
# masterauth
masterauth tanzhang
重启
redis-cli -p 6380 -a tanzhang shutdown
登录6380监控
[root@bzhang ~]# redis-cli -p 6380 -atanzhang
127.0.0.1:6380> monitor
OK
1469858027.309008 [0 192.168.26.132:6379]"PING"
1469858120.771769 [0 192.168.26.132:6379]"SELECT" "0"
1469858120.771777 [0 192.168.26.132:6379]"set" "test" "test123"
可以监控到在6379上操作的命令Redis生产环境优化
1、根据业务需要选择合适的数据类型,并为不同的应用场景设置相应的紧凑存储参数。2、当业务场景不需要数据持久化时,关闭所有的持久化方式可以获得最佳的性能以及最大的内存使用量。
3、如果需要持久化,根据是否可以容忍重启丢失部分数据在快照方式与语句追加方式之间选择其一,不要使用虚拟内存以及diskstore方式。
4、不要让你的redis所在机器物理内存使用超过实际内存总理的3/5。
5、redis.conf中maxmemory选项,该选项是告诉redis当使用了多少物理内存后就开始拒绝后续的写入请求,该参数能很好的保护redis不会因为使用了过多的物理内存后而导致swap,最终严重影响性能甚至崩溃。redis.conf文件中vm-enabled 为no
6、大量数据尽量按业务使用多个redis实例把数据分散开。
异机主从只要修改配置文件即可。