前言
在实际的开发过程中,redis的使用场景非常多。它是一款非常优秀的NoSQL。查询效率是mysql的数百倍。
redis官网
redis命令参考
一.redis介绍
- 什么是redis?
reids是一款开源的,内存中存储的数据结构存储系统。同时也支持数据持久化存储 - redis的应用场景
- 登录会话存储,session
- 作为消息队列,比如celery,RabbitMQ就是使用Redis作为中间间
- 网站首页板块的内容
- 把前面的10页中100篇的文章缓存到redis中。
- 微博的好友关系
- 发布和订阅的功能
- redis和memcached的区别
想要了解memcached,可以看我之前写的博客,点这里
二.redis安装配置
这里介绍Linux下的CentOs 7.x版本的安装
- 下载redis源码包
wget http://download.redis.io/releases/redis-5.0.5.tar.gz
tar xzf redis-5.0.5.tar.gz
cd redis-5.0.5
make
- 修改配置文件(redis.conf)
# bind 127.0.0.1 #找到并注释掉,即可以实现远程访问本机redis
requirepass 123456 # 在requirepass foobared 下面增加这一行,设置redis的密码,密码可以随意指定
- 启动redis
src/redis-server /opt/redis-5.0.5/redis.conf & #可以加&放到后台中运行
4. 连接redis
src/redis-cli #本地连接
redis-cli -h IP地址 -p 端口号 -a 密码
三.redis的常用命令
1.字符串的操作,增加,删除,获取,过期时间
>auth 123456 # 这里设置了redis的秘密要先认证
>set username jack # set 存储字段
>set username jack EX 120 # set存储字段并设置120s过期时间
>expire username 120 # 设置120s过期时间
>get username # 获取username对应的value值
>del username # 删除username对应的值
>mset key1 value1 key2 value2 key3 value3 # mset指一次设置多个值
- 列表操作
>lpush company1 ali huawei # 在列表左侧依次插入字段
>lrange company1 0 -1 # 获取company1列表的值,从0,到最后
>rpush company2 Tencent ali huawei #在列表的右侧依次插入字段
>lrange company2 0 -1 # 获取列表的值
>linsert company2 before ali bytes # 在现有元素的前面插入一个新的元素
>linsert company2 after ali xiaomi # 在现有元素的后面插入一个新的元素
>lset company2 2 apple # 通过列表的索引下表来修改指定的值
>lrem key count value #删除指定元素
count > 0 从头往尾移除
count < 0 从尾往头移除
count = 0 移除所有
- 集合操作
>sadd username jack rose peny # 创建集合
>smembers username # 获取集合中的所有元素
>scard username # 查看元素有几个元素
>srem username peny #删除集合中指定的元素
>sadd username1 jack peny
>sinter username username1 #两个集合中交集
>sunion username username1 #两个集合的并集
>sdiff username username1 #两个集合的差集
- hash操作
- 什么是哈希?
由一个以上包着的字典就是哈希值
{
"person":{
"age":18,
"height":180
}
}
>hset person username jack # 添加hash值
>hget person username # 获取hash
>hgetall person #获取所有的hash对象
>hkeys person # 获取hash的所有key
>hvals person # 获取hash中所有的value值
>hmset person username jack age 18 weight 130 height 180 #设置多个字段
>hmget person username age weight height #一次获取多个字段
- redis的事务
支持原子性,隔离事务。即开启事务后要保证操作的完成一致性,要么成功,要么失败
- multi :进入事务
- discard:退出事务
- exec:执行操作
6.redis的数据持久化
RDB AOF
save 900 1 appendonly
每隔多长时间执行一次全量 实时备份更新数据命令
备份
备份的是value
备份的文件是dump.rdb 备份到appendonly.aof
四.python操作redis
1.安装redis
pip install redis
pip install redis -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
# -*-coding:utf-8-*-
from redis import Redis
# 远程连接redis
# 必须开启远程连接,即注释掉bind 127.0.0.1
cache = Redis(host='127.0.0.1', port=6379, password='123456', decode_responses=True)
# 1.操作字符串
cache.set('username', 'jack', ex=100)
cache.delete('username')
# 2.列表操作
a = ['tencent', 'ali', 'huawei']
cache.lpush('company', 'tencet', 'ali', 'huawei')
print(cache.lrange('company', 0, -1))
cache.rpush('company', 'tencet', 'ali', 'huawei')
cache.linsert('company', 'BEFORE', refvalue='tencet', value='ali')
cache.lrem('company', 0, 'ali')
print(cache.lrange('company', 0, -1))
# 3.集合操作
cache.sadd('username', 'jack')
cache.smembers('username')
print(cache.scard('username'))
cache.srem('username', 'jack')
# 4.hash操作
cache.hset('person', 'username', 'jack')
print(cache.hget('person', 'username'))
print(cache.hgetall('person'))
print(cache.hkeys('person'), cache.hvals('person'))
person = {
"username": "jack",
"age": 18,
"height": 180,
"weight": 120
}
cache.hmset('person', person)
print(cache.hmget('person', 'username', 'age'))