redis1
目录
一、redis介绍
1)redis安装
"""
1、官网下载:安装包或是绿色面安装
2、安装并配置环境变量
"""
2)redis VS mysql
"""
redis: 内存数据库(读写快)、非关系型(操作数据方便、数据固定)
mysql: 硬盘数据库(数据持久化)、关系型(操作数据间关系、可以不同组合)
大量访问的临时数据,才有redis数据库更优
"""
3)redis VS memcache
"""
redis: 操作字符串、列表、字典、无序集合、有序集合 | 支持数据持久化(数据丢失可以找回(默认持久化,主动持久化save)、可以将数据同步给mysql) | 高并发支持
memcache: 操作字符串 | 不支持数据持久化 | 并发量小
"""
二、Redis操作
1)启动服务
"""
redis-cli 连接
前提:前往一个方便管理redis持久化文件的逻辑再启动服务:dump.rdb
1)前台启动服务-——终端关闭,服务关闭
>: redis-server
2)后台启动服务
>: redis-server --service-start
注)Linux系统后台启动(或是修改配置文件,建议采用方式)
>: redis-server &
3)配置文件启动:前台服务(终端关闭,服务关闭)
>: redis-server 配置文件的绝对路径
4)配置文件启动:后台服务
注)windows系统默认按Redis安装包下的redis.windows-service.conf配置文件启动
>: redis-server --service-start (默认走redis.windows-service.conf配置文件,还可以指定)
注)Linux系统可以完全自定义配置文件(redis.conf)后台启动
>: redis-server 配置文件的绝对路径 &
"""
2)密码管理
"""
***在windows上配置好验证需要前台启动
1)提倡在配置文件中配置,采用配置文件启动
requirepass 密码
2)当服务启动后,并且连入数据库(redis数据库不能轻易重启),可以再改当前服务的密码(服务重启,密码重置)
config set requirepass 新密码
3)已连入数据库,可以查看当前数据库服务密码
config get requirepass
auth 输入密码
"""
3)连接数据库
"""
1)默认连接:-h默认127.0.0.1,-p默认6379,-n默认0号数据库,-a默认无密码
>: redis-cli 未改端口,默认6379
>: redis-cli -p 6380 比如改了端口的情况下
2)完整连接:
>: redis-cli -h ip地址 -p 端口号 -n 数据库编号 -a 密码
3)先连接,后输入密码
>: redis-cli -h ip地址 -p 端口号 -n 数据库编号
>: auth 密码
"""
4)切换数据库
"""
1)在连入数据库后执行
>: select 数据库编号
eg:select 1
测试数据:set name jeff
"""
5)关闭服务
"""
1)在没有连接进数据库时执行
>: redis-cli shutdown 关闭服务
2)在连接进数据库后执行
>: shutdown
"""
6)清空redis数据库
"""
1)连接数据库执行
>: flushall 清空所有库的所有数据
"""
7)数据持久化
"""
1)配置文件默认配置
save 900 1 # 超过900秒有1个键值对操作,会自动调用save完成数据持久化
save 300 10 # 超过300秒有10个键值对操作,会自动调用save完成数据持久化
save 60 10000 # 超过60秒有10000个键值对操作,会自动调用save完成数据持久化
2)安全机制
# 当redis服务不可控宕机,会默认调用一下save完成数据持久化(如果数据量过大,也可能存在部分数据丢失)
3)主动持久化
>: save # 连入数据库时,主动调用save完成数据持久化
注:数据持久化默认保存文件 dump.rdb,保存路径默认为启动redis服务的当前路径
"""
8)redis相关配置
"""
1)绑定的ip地址,多个ip用空格隔开
bind 127.0.0.1
2)端口,默认6379,一般不做修改
port 6379
3)是否以守护进程启动,默认为no,一般改为yes代表后台启动(windows系统不支持)
daemonize no
4)定义日志级别,默认值为notice,有如下4种取值:
debug(记录大量日志信息,适用于开发、测试阶段)
verbose(较多日志信息)
notice(适量日志信息,使用于生产环境)
warning(仅有部分重要、关键信息才会被记录)
loglevel notice
5)配置日志文件保持地址,默认打印在命令行终端的窗口上
如果填写 "./redis.log" 就会在启动redis服务的终端所在目录下,用redis.log记录redis日志
logfile ""
eg)终端首先切断到log文件夹所在目录(一般就可以采用redis的安装目录,也可以自定义),再启动reids服务
logfile "./log/redis.log"
6)数据库个数,默认是16个,没特殊情况,不建议修改
databases 16
7)数据持久化
save 900 1 # 超过900秒有1个键值对操作,会自动调用save完成数据持久化
save 300 10 # 超过300秒有10个键值对操作,会自动调用save完成数据持久化
save 60 10000 # 超过60秒有10000个键值对操作,会自动调用save完成数据持久化
8)数据库持久化到硬盘失败,redis会立即停止接收用户数据,让用户知道redis持久化异常,避免数据灾难发生(重启redis即可),默认为yes,不能做修改
stop-writes-on-bgsave-error yes
9)消耗cpu来压缩数据进行持久化,数据量小,但会消耗cpu性能,根据实际情况可以做调整
rdbcompression yes
10)增持cpu 10%性能销毁来完成持久化数据的校验,可以取消掉
rdbchecksum yes
11)持久化存储的文件名称
dbfilename dump.rdb
12)持久化存储文件的路径,默认是启动服务的终端所在目录
dir ./
13)reids数据库密码
requirepass 密码
"""
三、Redis数据类型
https://www.runoob.com/redis/redis-tutorial.html
"""
数据操作:字符串、列表、哈希(字典)、无序集合、有序(排序)集合
有序集合:游戏排行榜
字符串:
set key value
get key
mset k1 v1 k2 v2 ... 添加列表
mget k1 k2 ...
setex key exp value 设置过期时间
incrby key increment 增加
列表:
rpush key value1 value2 ...
lpush key value1 value2 ...
lrange key bindex eindex
lindex key index
lpop key | rpop key
linsert key before|after old_value new_value
哈希:
hset key field value
hget key field
hmset key field1 value1 field2 value2 ...
hmget key field1 field2
hkeys key
hvals key
hdel key field
集合:
sadd key member1 member2 ...
sdiff key1 key2 ...
sdiffstore newkey key1 key2 ...
sinter key1 key2 ...
sunion key1 key2 ...
smembers key
spop key
有序集合:
zadd key grade1 member1 grade2 member2 ... # 添加数据 zadd game 10 jeff 20 bob 30 tom
zincrby key grade member # 给指定添加 zincrby game 40 jeff
zrange key start end # 取后3名 zrange game 0 2
zrevrange key start end #取前3名 zrevrange game 0 2
"""
四、python使用redis
1)依赖
>: pip3 install redis
2)直接使用
import redis
# decode_responses=True得到的结果会自动解码(不是二进制数据)
r = redis.Redis(host='127.0.0.1', port=6379, db=1, password=None, decode_responses=True)
**注意:py文件的名字不能和模块名字冲突
3)连接池使用
import redis
pool = redis.ConnectionPool(host='127.0.0.1', port=6379, db=1, max_connections=100, password=None, decode_responses=True)
r = redis.Redis(connection_pool=pool)
4)缓存使用:要额外安装 django-redis
pip install django-redis
# 1.将缓存存储位置配置到redis中:settings.py
CACHES = {
"default": {
"BACKEND": "django_redis.cache.RedisCache",
"LOCATION": "redis://127.0.0.1:6379/0",
"OPTIONS": {
"CLIENT_CLASS": "django_redis.client.DefaultClient",
"CONNECTION_POOL_KWARGS": {"max_connections": 100},
"DECODE_RESPONSES": True,
"PASSWORD": "",
}
}
}
# 2.操作cache模块直接操作缓存:views.py
from django.core.cache import cache # 结合配置文件实现插拔式
# 存放token,可以直接设置过期时间
cache.set('token', 'header.payload.signature', 300)
# 取出token
token = cache.get('token')
选择了IT,必定终身学习