1.redis安装:
wget http://download.redis.io/releases/redis-5.0.0.tar.gz
tar -zxvf redis-5.0.0.tar.gz
yum install gcc
yum install gcc-c++
make
cp src/redis-server /usr/bin/
cp src/redis-cli /usr/bin/
2.配置文件参数:
bind 127.0.0.1 #对外提供链接的地址
port 6379 #默认端口号
daemonize no #守护进程(如果是yes后台运行)
databases 16 #(redis数据库用0,1,2,3....代表)
save 900 1 #每900秒有1次增删改操作就同步到磁盘当中
dbfilename dump.rdb #rdb备份方式的文件名字(默认开启)
dir ./ #备份文件存放位置
appendonly no #aof备份是否开启(默认不开启)
appendfilename "appendonly.aof" #aof备份文件名称
appendfsync everysec #aof同步机制,每秒同步到磁盘当中
3.数据库命令
1)启动命令:
redis-server redis.conf
2)连接命令:
redis-cli -h 127.0.0.1 -p 6379
3)切换数据库:
select 2
4.数据库操作
1)字符串
添加:set username li
删除:del username
设置过期时间:set key value EX timeout或setex key timeout value
查看过期时间:ttl username
查看当前redis所有的key:keys *
2)列表
在列表左边添加元素:lpush key value
在列表右边添加元素:rpush key value
查看列表中的元素:lrange key start stop
移除并返回列表key的头元素:lpop key
移除并返回列表的尾元素:rpop key
指定返回第几个元素:lindex key index
获取列表中的元素个数:llen key
删除指定的元素:lrem key count value count指定删除个数
3)集合
添加元素:sadd lan php java python
查看元素:smembers lan
移除元素:srem lan php
查看集合中的元素个数:scard lan
获取多个集合的交集:sinter team1 team2
获取多个集合的并集:sunion team1 team2
获取多个集合的差集:sdiff team1 team2 以左边的集合为标准
4)哈希
添加一个新值:hset website baidu baidu.com
获取哈希中的field对应的值:hget website baidu
删除field中的某个field:hdel website baidu
获取某个哈希中所有的field和value:hgetall website
获取某个哈希中所有的field:hkeys website
获取某个哈希中所有的值:hvals website
判断哈希中是否存在某个field:hexists website baidu
获取哈希中总共的键值对:hlen website
5.事务操作
Redis事务可以一次执行多个命令,事务具有以下特征:
隔离性:事务中的所有命令都会序列化、按顺序地执行,不会被其他命令打扰。
原子性:事务中的命令要么全部被执行,要么全部都不执行。
开启一个事务:multi
提交事务:exec
回滚事务:discard
6.发布/订阅
发布消息:publish channel message
订阅频道:subscribe chanel
7.持久化
rdb与aof区别
8.python连接redis
1)安装python-redis:
pip install redis
2)新建一个文件比如redis_test.py,然后初始化一个redis实例变量,并且在ubuntu虚拟机中开启redis。比如虚拟机的ip地址为192.168.52.233。示例代码如下:
从redis包中导入Redis类
from redis import Redis
初始化redis实例变量
xtredis = Redis(host='192.168.52.233',port=6379)
3)对字符串的操作
操作redis的方法名称,跟之前使用redis-cli一样。
添加一个值进去,并且设置过期时间为60秒,如果不设置,则永远不会过期
xtredis.set('username','xiaotuo',ex=60)
获取一个值
xtredis.get('username')
删除一个值
xtredis.delete('username')
4)对列表的操作
同字符串操作,所有方法的名称跟使用redis-cli操作是一样的:
给languages这个列表往左边添加一个python
xtredis.lpush('languages','python')
给languages这个列表往左边添加一个php
xtredis.lpush('languages','php')
获取languages这个列表中的所有值
print xtredis.lrange('languages',0,-1)
> ['javascript','php','python']
5)对集合的操作
给集合team添加一个元素xiaotuo
xtredis.sadd('team','xiaotuo')
给集合team添加一个元素datuo
xtredis.sadd('team','datuo')
给集合team添加一个元素slice
xtredis.sadd('team','slice')
获取集合中的所有元素
xtredis.smembers('team')
> ['datuo','xiaotuo','slice'] # 无序的
6)对哈希(hash)的操作:
给website这个哈希中添加baidu
xtredis.hset('website','baidu','baidu.com')
给website这个哈希中添加google
xtredis.hset('website','google','google.com')
获取website这个哈希中的所有值
print xtredis.hgetall('website')
> {"baidu":"baidu.com","google":"google.com"}
7)事务(管道)操作
redis支持事务操作,也即一些操作只有统一完成,才能算完成。否则都执行失败。
定义一个管道实例
pip = xtredis.pipeline()
pip.set('username', 'litong')
pip.set('school', 'qinghua')
pip.execute()
8)订阅与发布操作
订阅
from redis import Redis
ps = xtredis.pubsub()
ps.subscribe('email')
while True:
for item in ps.listen():
if item['type'] == 'message':
data = item.get('data')
print(data.decode('utf-8'))
发布
from redis import Redis
xtredis = Redis(host='192.168.254.41', port=6379)
xtredis.publish('email', 'xxx@qq.com')
9.redis主从
1)拷贝一份redis配置并命名为slave.conf
cp redis.conf slave.conf
2)编辑配置文件
bind 192.168.52.233
slaveof 192.168.52.233 6379
port 6380
10.redis集群(5.0版本)
1)创建6个配置文件
touch{7001..7006}.conf
2)编辑配置文件
每个配置文件需修改端口、进程文件名、集群配置文件名
port 7001 #绑定端口
bind 192.168.52.233 #绑定对外连接提供的ip
daemonize yes #开启守护进程
pidfile 7001.pid #进程文件名
cluster-enabled yes #是否是集群
cluster-config-file 7001_node.conf #集群配置文件
cluster-node-timeout 15000 #集群连接超时时间(15000ms)
appendonly yes #数据持久化类型
3)执行配置文件
redis-server 7001.conf
redis-server 7002.conf
redis-server 7003.conf
redis-server 7004.conf
redis-server 7005.conf
redis-server 7006.conf
4)初始化
redis-cli --cluster create 192.168.52.233:7001 192.168.52.233:7002 192.168.52.233:7003 192.168.52.233:7004 192.168.52.233:7005 192.168.52.233:7006 --cluster-replicas 1 (数字1表示每个主节点对应一个从节点)
5)进入数据库验证
redis-cli -c -h 192.168.52.233 -p 7001
redis-cli -c -h 192.168.52.233 -p 7002
redis-cli -c -h 192.168.52.233 -p 7003