一、redis安装和配置
下载、安装
wget http://download.redis.io/releases/redis-5.0.7.tar.gz
tar -xzf redis-5.0.7.tar.gz
ln -s redis-5.0.7 redis
cd redis
make && make install
- 把可执行文件加入环境变量
- 用户变量(用户家路径下: .bash_profile)
- 系统变量
- 把可执行文件在usr路径下建立软连接
关于卸载redis
ps aux | grep redis
kill [ 进程id]
cd /usr/local/
rm -f /usr/local/redis/bin/redis*
rm -f /usr/local/bin/redis*
rm -rf redis
简单启动服务
redis-server
动态参数启动
redis-server --port 6380
重点:通过配置文件启动redis
bind 0.0.0.0
daemonize NO
protected-mode no
requirepass 123456
普通客户端链接
redis-cli -h ip -p port
redis-cli
带密码的
redis-cli -h 127.0.0.1 -p 6370 -a 123456
redis-cli -h 127.0.0.1 -p 6370
先登陆,再通过auth输入密码
注意
CONFIG GET *
CONFIG SET maxmemory 128M
CONFIG set requirepass 123456
CONFIG REWRITE
二、API
keys *
keys he*
keys he[ h- l]
keys he?
dbsize
set a b
exists a
( integer) 1
删除成功返回1 ,key不存在返回0
expire name 3
ttl name
persist name
type name
info命令:内存,cpu,主从相关
client list 正在连接的会话
client kill ip: 端口
dbsize 总共有多少个key
flushall 清空所有
flushdb 只清空当前库
select 数字 选择某个库 总共16 个库
monitor 记录操作日志,夯住
hget key field
hset key field value
hdel key field
hset user: 1 : info age 23
hget user: 1 : info ag
hset user: 1 : info name lqz
hgetall user: 1 : info
hdel user: 1 : info age
hexists key field
hlen key
hexists user: 1 : info name
hlen user: 1 : info
hmget key field1 field2 . . . fieldN
hmset key field1 value1 field2 value2
hgetall key
hvals key
hkeys key
hincrby user: 1 : info pageview count
三、高级用法
- pipeline每次只能作用在一个redis的节点上,(如果做了集群,就没有pipeline了)
- 悲观锁和乐观锁
- redis只能实现乐观锁:https: // www. cnblogs. com/ liuqingzheng/ p/ 9997092. html
模拟乐观锁
watch age
multi
decr age
exec
mutil
decr age
exec
发布订阅
- pfadd key element
- pfcount key
- 去重,独立用户统计,有错误率
geoadd cities: locations 106.14 .60 .93 beijing
geoadd cities: locations 117.12 39.08 tianjin
geoadd cities: locations 114.29 38.02 shijiazhuang
geoadd cities: locations 118.01 39.38 tangshan
geoadd cities: locations 115.29 38.51 baoding
geodist cities: locations beijing tianjing km
georadiusbymember cities: locations beijing 150 km
四、持久化
- rbd:缓存
- aof;对数据准确性要求高一点
rbd方案(三种触发方式)
配置 seconds changes
save 900 1
save 300 10
save 60 10000
save 900 1
save 300 10
save 60 10000
dbfilename dump-3306.rdb
dir /bigdiskpath
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
AOF方案
客户端每写入一条命令,都记录一条日志,放到日志文件中,如果出现宕机,可以将数据完全恢复
本质上就是把过期的、无用的、重复的、可以优化的命令,来做优化
这样,可以减少磁盘的占用量,加速恢复速度
appendonly yes
appendfilename "appendonly-3396.aof"
appendfsnyc everysec
dir /data
no-appendfsync-on-rewrite yes
五、主从复制原理与优化
在6380 上执行(去从配置,配置主库)
slaveeof 127.0 .0 .1
slaveof no one
daemonize no
pidfile redis. pid
bind 0.0 .0 .0
protected- mode no
port 6379
timeout 0
logfile redis. log
dbfilename dump. rbd
dir / data
slaveof 10.0 .0 .101
slave- read- only yes