zoukankan      html  css  js  c++  java
  • 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')
  • 相关阅读:
    敏捷开发-各个原则的理解
    DWH中增量数据的抽取
    SSIS的部署和配置
    Checkpoint 和Breakpoint
    两种动态SQL
    SQLServer查询计划
    程序员接项目的经验1
    Date.prototype.format
    前端颜色选择器
    Idea快捷键和使用技巧【未完】
  • 原文地址:https://www.cnblogs.com/wenchengqingfeng/p/10101789.html
Copyright © 2011-2022 走看看