redis.exceptions.ResponseError: NOAUTH Authentication required.
#原因:redis设置了密码,创建连接时需要密码进行身份认证
pool = redis.ConnectionPool(host="localhost", port=6379, password=<你的密码>)
#redis-cli -h 127.0.0.1 -p 6379 -a <密码>
1、cmd直接登入:redis-cli -a <你的密码> #redis-cli -p 6379 -a <密码>
2、登入后设置密码:config set requirepass <密码>
3、获取密码:config get requirepass
4、先登入后验证密码:
redis-cli
auth <密码>
5、清空当前数据库中的所有 key:flushdb
6、清空整个 Redis 服务器的数据(删除所有数据库的所有 key ):flushall
redis下,数据库是由一个整数索引标识,而不是由一个数据库名称。默认情况下,一个客户端连接
到数据库0。redis配置文件中下面的参数来控制数据库总数:
/etc/redis/redis.conf
文件中,有个配置项 databases = 16 //默认有16个数据库
7、切换数据库:select #0为第一个数据库
8、查看当前数据库下所有的keys: keys *
1、set(name, value, ex=None, px=None, nx=False, xx=False)
在Redis中设置值,默认,不存在则创建,存在则修改
参数:
ex,过期时间(秒)
px,过期时间(毫秒)
nx,如果设置为True,则只有name不存在时,当前set操作才执行
xx,如果设置为True,则只有name存在时,岗前set操作才执行
2、setnx(name, value)
设置值,只有name不存在时,执行设置操作(添加)
如果是r.setnx('name', 'Tom') 则name的值还是'bigberg'
r.setnx('age', 22)
print(r.get('age'))
3、 setex(name, value, time)
# 设置值
# 参数:
# time,过期时间(数字秒 或 timedelta对象)
4、psetex(name, time_ms, value)
# 设置值
# 参数:
# time_ms,过期时间(数字毫秒 或 timedelta对象)
5、mset(*args, **kwargs)
批量设置值
如:
mset({'k1': 'v1', 'k2': 'v2'})
r.mset({'a': 1, 'b': 2})
print(r.get('a'))
print(r.get('b'))
6、 get(name)
获取值
7、mget(keys, *args)
批量获取
如:
mget('ylr', 'wupeiqi')
或
r.mget(['ylr', 'wupeiqi'])
r.mset({'a': 1, 'b': 2})
print(r.mget('a', 'b'))
8、getset(name, value)
设置新值并获取原来的值
# 会将原先的值先返回
print(r.getset('name', 'Tom'))
print(r.get('name'))
9、getrange(key, start, end)
如果是中文字符,在utf-8编码下,一个中文字符占3个字节
r.set('address', '杭州')
res = r.getrange('address', 0, 2)
print(res.decode())
10、setrange(name, offset, value)
# 修改字符串内容,从指定字符串索引开始向后替换(新值太长时,则向后添加)
# 参数:
# offset,字符串的索引,字节(一个汉字三个字节)
# value,要设置的值
r.setrange('address', 0, '苏')
print(r.get('address').decode())
# 输出
苏州
r.setrange('name', 2, 'ol')
print(r.get('name').decode())
# 输出
Tool
# Tom 变成了 Tool
cache:高速缓存存储器,用于CPU从内存中进存取数据时进行缓存。