Python-----redis数据库
Posted 文城清枫
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python-----redis数据库相关的知识,希望对你有一定的参考价值。
# redis数据库:基于内存的高性能key-value数据库,整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库数据flush到硬盘上进行保存;
#缺点:1、数据库容量受到物理内存的限制,不能用作海量数据库的高性能读写,因此redis适合的场景主要局限在较小数据量的高性能操作和运算上。
#使用redis的好处:
#1、速度快---因为数据存在内存中,类似于HashMap(HashMap查找和操作的时间复杂度为0),每秒可以处理10w次读写操作
#2、支持多种数据类型---支持string,list,set,sorted set,hash,单个value的最大限制是1G
#3、支持事物、操作的原子性---所谓原子性就是要么全部执行,要么全部不执行
#4、丰富的特性(过期时间)---可用于缓存,消息,按key设置过期时间,过期后数据自动被删除
#5、redis比memcached的优势:
# memcached所有值只是简单的字符串,redis多种数据类型
# redis速度比memcached快很多
# redis可以持久化其数据
#6、redis比memcached的区别:
# 存储方式:memcached把数据全部存在内存中,断电后会挂掉,数据不能操作内存大小;redis有部分数据在硬盘上,这样能保证数据的持久化
# 支持数据类型:memcached 只有简单字符串;redis 支持string、list、set、sorted set、hash
# 使用底层模式不同:它们之间底层通信方式、客户端之间通信的应用协议不一样。redis直接自己构建了VM机制,因为一般的系统调用系统函数的话,会浪费一定的时间去移动和请求
#7、redis常见性能问题解决:
# master写内存快照,save命令调度rdbsave函数,会阻塞主线程的工作,当快照比较大时相对性能影响是非常大的,会间断性暂停服务,所以master最好不要写内存快照。
# master AOF持久化:如果不重写AOF文件,这个持久化方式对性能的影响是最小的,但是AOF文件不断增大,AOF文件过大会影响master重启的恢复速度。master最好不要做
#任何持久化工作,包括内存快照和AOF日志文件,特别是不要启用内存快照做持久。
# master调用**重写AOF文件,AOF文件重写会调用大量的cpu,
# redis主从复制的性能问题,为了主从复制的速度和连接的稳定性,slave和master最好在同一个局域网内。
#mysql里有2000w数据 redis20w的数据,如何保障redis都是热点数据
#redis 6种数据淘汰策略(回收策略)
# 从已设置的过期时间的数据集中挑选最近最少使用的数据淘汰
# 从已设置的过期时间的数据集中挑选将要过期的数据淘汰
# 从已设置的过期时间的数据集中任意选择数据淘汰
# 从数据集中挑选最近最少使用的数据淘汰
# 从数据集中任意选择数据淘汰
# 禁止驱逐数据
#请用redis和任意语言实现
import redis
r=redis.Redis(host=‘118.24.3.40‘,password=‘HK139bc&*‘,port=‘6379‘,db=10)
#string数据类型
#增加(name,value,失效时间,其中失效时间单位是秒)
r.set(‘Name‘,‘apple‘,500)
#删除
r.delete(‘Name‘)
#查询(返回值为b byte类型二进制数据,如果对结果操作,建议转换为string类型)
src=r.get(‘Name‘)
src1=str(src)
print(src1[2:-1])
#输出key(带info字样)
print(r.keys(‘*info‘))
#判断key值是否存在
r.exists(‘Name‘)
#清空数据库
#r.flushdb()
#哈希类型
#增加(name,key,value)
r.hset(‘AA‘,‘aa‘,‘value‘)
#设置失效时间
r.expire(‘AA‘,500)
#查看失效时间
r.ttl(‘AA‘)
#查找---获取指定小key里面数据
r.hget(‘AA‘,‘aa‘)
#查找---所有key
r.hgetall(‘AA‘)
#删除---小key
r.hdel(‘AA‘,‘aa‘)
#删除---大key
r.delete(‘AA‘)
以上是关于Python-----redis数据库的主要内容,如果未能解决你的问题,请参考以下文章