zoukankan      html  css  js  c++  java
  • redis数据库

    为什么要学redis

    1、redis是内存 no-sql 数据库,相比mysql等硬盘数据库效率高
    2、在内存值配置数据库使用,而不直接使用内存,redis存储的数据是可以管理的
    3、memcache也是内存数据库,且django默认采用的就是memcache数据库,用redis替换memcache的路由很简单,后者更强大
        redis支持更多的数据类型
        redis自带缓存机制,出现数据库系统崩溃数据也是可以有找回的功能
        redis可以主动完成数据持久化(自带数据持久化功能)
        redis的数据过期时间机制也可以自身完成
    

    redis数据库与mysql数据库区别

    """
    redis:非关系数据库,通过内存存储数据(读写快),数据形式为(key,value),操作数据方便快捷
    
    mysql:关系型数据库,存在表关系,通过硬盘存储数据
    
    大量访问临时数据时,采用redis数据库更优
    """
    

    redis数据库与memcache数据库区别

    """
    redis:可操作的数据类型有:字符串、列表、字典、无序集合、有序集合,并且支持数据库持久化(数据丢失可以找回,可以将数据同步给mysql),并且支持高并发
    
    memcache:操作字符串,不支持数据持久化(数据丢失不能找回),且并发量小
    """
    

    使用redis数据库

    1、安装redis:(pip install redis)与可视化操作工具(可能需要配置环境变量:变量名path;变量值:redis路径)
    
    2、在服务中管理redis服务器的开启关闭
    
    3、命令行简单使用redis
    	redis-cli   	——启动客户端
    	set key value	——设置值(默认是在第0个数据库中添加,一个有0~15 个数据库)
    	get key			取出值
    	
    4.redis支持:字符串、字典、列表、集合、有序集合
    # https://www.runoob.com/redis/redis-tutorial.html
    
    5、特点:可持久化,可实现单线程单进程并发	
    

    redis基础操作

    """
    基础操作:
    	启动服务: redis-server (linux或mac系统后面再添加 &)
    	连接数据库:redis-cli
    	连接指定数据库:redis-cli -h 127.0.0.1 -p 6379 -n 1 (后面的 1 表示第几个数据库)
    	切换数据库: select 1
    
    操作数据类型:字符串、列表、字典、无序集合、有序集合(有序集合通常用于游戏排行榜)
    """
    

    redis支持数据类型:字符串、字典、列表、集合、有序集合

    支持的数据类型:String、Hash、List、Set、Sorted Set
    
    String:存储其他类型不能存的所有数据
    Hash:存储 key-value 形式数据,类似于字典
    List:存储 一系列有序value 形式数据,列表(数组)
    Set:存储 一系列无序value 形式数据,集合
    Sorted Set:存储 有排列标号value 形式数据,排行
    

    redis

    哈希操作 (字典)

    常用方法:
    单增:hset key field value
    单查:hget key field
    所有键值:hgetall key
    单删:hdel key field
    所有key:hkeys key
    所有值:hvals key
    

    列表操作

    右增: rpush key v1 v2 ... vn
    左增: lpush key v1 v2 ... vn
    修改: lset key index value
    左删: lpop key
    右删: rpop key
    插入:linsert key before|after old_value new_value
    区间:lrange key begin_index end_index
    

    python使用redis

    依赖
    >: pip3 install redis
    
    
    直接使用
    import redis
    r = redis.Redis(host='127.0.0.1', port=6379, db=1)
    
    
    连接池使用
    import redis
    pool = redis.ConnectionPool(host='127.0.0.1', port=6379, db=10, max_connections=100)
    r = redis.Redis(connection_pool=pool)
    
    
    缓存使用:要额外安装 django-redis——pip install django-redis
    # 1.将缓存存储位置配置到redis中:settings.py
    CACHES = {
        "default": {
            "BACKEND": "django_redis.cache.RedisCache",
            "LOCATION": "redis://127.0.0.1:6379/11",  # 11表示连接第11个数据库
            "OPTIONS": {
                "CLIENT_CLASS": "django_redis.client.DefaultClient",
                "CONNECTION_POOL_KWARGS": {"max_connections": 100}
            }
        }
    }
    
    # 2.操作cache模块直接操作缓存:views.py
    from django.core.cache import cache  # 结合配置文件实现插拔式
    # 存放token,可以直接设置过期时间
    cache.set('token', 'header.payload.signature', 10)
    # 取出token
    token = cache.get('token')
    
    

    脚本测试使用如下

    import redis
    
    # 直接使用
    # r = redis.Redis(host='127.0.0.1', port=6379, db=1)
    """
    字符串操作
    r.set('name', 'bob')  # 设置值
    print(r.get('name'))  # b'bob',redis通过内存存储数据,数据都是二进制格式
    
    # r.setex('height', 3, 180)  # 设置值及过期时间
    print(r.get('height'))
    """
    
    """# 列表操作
    # r.rpush('stus', 's1', 's2', 's3')
    # print(r.lrange('stus', 0, 1))  #[b'1', b'2', b'3']
    """
    
    """
    # 集合操作
    r.zadd('game', {'a':10, 'b': 20, 'c': 15})
    # print(r.zrevrange('game', 0, 1))  # 取排名前2位
    print(r.zrange('game', 0, 1))  #[b'a', b'c']  取排名倒数2位
    """
    
    """
    # 连接池使用
    pool = redis.ConnectionPool(host='127.0.0.1', port=6379, db=0, max_connections=100) # max_connections 最大连接数为100
    r = redis.Redis(connection_pool=pool)
    # r.set('name', 'bob')  # 设置值
    # print(r.get('name'))
    
    # r.rpush('stus', 's1', 's2', 's3')
    # print(r.lrange('stus', 0, 2))
    
    # r.zadd('game', {'a': 10, 'b': 20, 'c': 15})
    # # # print(r.zrevrange('game', 0, 1))
    # # print(r.zrange('game', 0, 1))
    """
    
    
    # django使用redis
    # 导入django环境
    import os, django
    os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'day83proj.settings.dev')
    django.setup()
    
    from django.core.cache import cache
    # cache.set('name', 'bob', 20)
    print(cache.get('name'))
    
    
    
  • 相关阅读:
    “Win10 UAP 开发系列”之 在MVVM模式中控制ListView滚动位置
    “Win10 UAP 开发系列”之主题模式切换
    Windows Phone 8.1中AppBarToggleButton的绑定问题
    Windows Phone 8.1中处理后退键的HardwareButtons.BackPressed事件
    在后台代码中动态生成pivot项并设置EventTrigger和Action的绑定
    数据对象转json与md5加密注意事项
    iOS中wkwebview加载本地html的要点
    iOS项目开发常用功能静态库
    AFN中请求序列化的设置
    swift中的AnyHashable
  • 原文地址:https://www.cnblogs.com/chmily/p/12054965.html
Copyright © 2011-2022 走看看