1.Redis内存数据库
- Redis基于内存可持久化的日志型、Key-Value数据库
- 存储的数据类型(string,int,float,list,set,hash)
- Redis在缓存、队列中多有应用
- 原子性-Redis所有操作都是原子性的,并且支持事务,不支持回滚
- 数据持久化-可以将内存数据保存到磁盘中,并提供多种存储机制
- 数据备份-支持主从模式(master-slave)
- 集群-支持集群,并实现了哨兵机制
- 丰富的特性-设置过期事件,发布/订阅,通知等机制
2.应用场景
- session存储(性能更好,方便设置过期时间)
- 购物车(记录用户当前购物车商品信息)
- 网页缓存(将请求的url路由返回的网页信息,存储在redis的key-value中)
- 实时排名(redis存储数据权重信息,提供排名数据)
3.安装
#ubuntu安装
sudo apt-get install redis-server
# MAC使用homebrew安装
brew install redis-server
4.配置
- (默认配置可以不操作)
# 查看Redis配置信息
cat /etc/redis/redis.conf
# IP地址
bind 127.0.0.1
# 端口号
port 6379
# 是否以守护进程运行
daemonize yes
# 日志文件(错误信息) 存储路径
logfile "/var/log/redis/redis-server.log"
# 数据持久化文件名
dbfilename dump.rdb
# 数据持久化文件的存储路径
dir ./
# 自动持久化策略 如果60秒内执行了100次修改则自动保存一次
save 60 100 save 900 1
# 是否开启aof持久化机制
appendonly no
# 数据库,默认有16个
database 16
# 从设置,指定主服务器的ip+端口
slaveof
如果修改日志文件、持久化文件名或路径,需要对存放文件/路径开启权限, 否则记录/保存失败 如 sudo chmod 777 /var/log/redis/redis-server.log
5.启动
redis-serve

6.服务端和客户端命令
- 开启数据库
redis-server # 以默认配置启动
redis-server ./redis.conf # 以自定义配置启动, 推荐
redis-server --help # 查看帮助⽂档
- 连接数据库
redis-cli # 以默认配置连接
redis-cli -h 127.0.0.1 -p 6379 # 连接指定服务的数据库
redis-cli --help # 查看帮助⽂档
- 连接测试
ping
- 切换数据库
select 15
- 数据持久化
bgsave # 异步持久化数据库
- 清空数据库
flushall # 清空所有数据库
flushdb # 清空当前数据库
- 关闭数据库
shutdown [NOSAVE] [SAVE] # 关闭数据库,使用save则会先持久化数据库
- kill Redis数据库进程
lsof -i:6379 # 查看数据库进程pid
或 ps aux | grep redis
kill -9 pid # 结束redis进程
7.redis-cli数据操作
| 不同数据类型,调用Redis方法
- string

- keys

- hash

- list

- set 元素为string类型,无序,唯一性,没有修改操作

- zset元素为string类型,有序集合,元素关联double类型的socre,表示全中,将元素从小到大排序,没有修改操作。

8.python交互
- 创建连接对象
import redis
con = redis.Redis(host='localhost', port=6379, decode_responses=True, db=0)
demo1.py
import redis
try:
con = redis.Redis(host='localhost', port=6379, decode_responses=True, db=0)
# 添加键 name 值为test
a= con.set('name','test')#set方法/增改
b = con.get('name')#get方法/查
c = con.keys()#keys方法/keys
d = con.delete('name')# delete方法/删除
print('写入', a)
print('查询', b)
print('keys', c)
print('删除', d)
except Exception as e:
print(e)

demo2.py
import redis
try:
con = redis.Redis(host='localhost', port=6379, decode_responses=True, db=0)
# 写入hashMap类型数据
user1 = {"name":"zhangsan","age":18}
con.hmset('zhangsan', user1)
content = con.hmget("zhangsan","name")[0]
except Exception as e:
print(e)