zoukankan      html  css  js  c++  java
  • Redis 补充

    Redis 补充


    Redis 的主要用途 
    
    	数据库 缓存和消息中间件
    
    	相当于一个字典
    

    数据库切换 select 1 (默认36个数据库 默认在0)


    1 基本数据类型

    字符串
    散列 hashes
    列表
    集合
    有序集合
    
      string 是基本数据类型
    
          是 redis的基本数据类型
    
          最大能存储 512 MB的数据
    
          string 类型是二进制安全的  -- 可以为任何数据 数字 图片 序列化 对象
    

    2 相关的操作


    (1)字符串:

     设置键值:
            set key value
    
        获取 值
            get key --value
            mget key1,key2 -- value1,value2 # 获取多个值
    
        运算:
    
            incr key  ---    将 key 对应的 value 加 1
            incrby key increment   将 key 对应的 value 加 increment
    
            decr key  ----  将 key 对应的 value 减 1
            decrby key decrment  将 key 对应的 value 减 decrement
    
        追加--在原有的基础上添加 值:
    
            append key value  在原有的基础上添加 值
    
        字符长度:
    
            strlen key
    

    (2)key键命令:

        keys *  查看当前所有的key  通配符 *
        keys *1*  正则匹配
    
        exits key  是否存在  1 0  真假
    
        type key 查看键 对应值的属性
    
    
        expire key seconds   设置 有效时间
    
        ttl key 查看剩余 时间
    
        del key  删除 键值对
    

    {{QQ截图20180321154756.png(uploading...)}}

    (3) 列表

    list命令:( 数组-- 两侧都可以进入数据) 一个键维护多个值添加的顺序
    设置:

        lpush py1 alex
        rpush py1 egon
    
        lpushx py1 alex
        rpushx py1 egon
    
        linsert py1 before alex name
        linsert py1 after egon  male
    
        lrange py1 0 -1 查看所有元素
    
        blpop py1 alex
        brpop py1 egon  # 阻塞 时间 timeout
    
        lpop py1     # 不会等待
        rpop py2
    
        llen py1   # 列表长度
    
        lindex  py1  index
    
        ltrim py1 0  3  只保留 索引 0到3的数据  其他的都删除
    

    (4)set 命令 (无序 唯一不重复 ):

        设置:
            sadd key members(可以多个)
    
        删除:
            srem key
    
        获取:
            smembers key  返回所有的成员
    
            scard key  获取元素个数
    
        交集:
            sinter  py1 py2
        差集:
           sdiff  py1  py2
        并集:
            suinion py1 py2
    
        判断是否在某个集合中
            sismember py1 haha
    
        spop  py1  随机删除一个元素 并返回
    
        srandmember py1 3  随机取出3个元素
    

    (5) hash 散列(对象)

        hash 命令:( 存对象 属性+值 )
        hash用于    存储 对象 ;  对象的格式是 键值对
    
    命令:
        设置:
    
            hset key field value  |  hset py  name "allp"
    
            hsetnx key(不重复的散列没如果重复 则不会设置) value 
    
            hmset key field value  | hmset hash1 name apple age 12
    
        获取
            hget py name -- allp
    
            hmget py  key1 key2 |  hmget hash1 name age    
    
            hgetall py 获取所有的属性和值 --- 奇数的是属性  偶数的是值
    
            hkeys py 获取所有的属性
    
            hvals py 获取所有的值
    
            hlen py  属性的个数
    
            hstrlen py name   ---某个属性对应的值得长度
    
            hexists py name ----是否存在属性
        删除:
            hdel py name   ---删除某一个属性
    

    补充:

    在 设置值的时候 
    
    hmset news:sport:1 title NBA content .......
    

    (6)zset 有序集合: sorted set

    按照权重排序

          设置:
               zadd myset 权重 "xxx"  权重 "ooo"
               zadd zcourse_set 0 scrapy 1 django 5 scrapy-redis
    
          获取:
                zrangebyscore zcourse_set 0 1        # 权重
    
                zrange myset start stop      #   zrange py1 0 -1
    
                zcard myset  ---查看元素个数
    
                zcount myset min max --返回权重 在 min 和max之间值 的 元素个数
    
                zscore myset xxx 查看元素的权重
    

    左侧网站数量(爬虫数量)

     ----  redis  -- incr('name')
    
        数量经常改变的 --->>  redis
    
        在爬虫爬取数据的时候 item的时候 --->>> redis
                                            redis_cli = redis.StrictRedis()
                                            redis_cli.incr('jobbole_counts')
    
        redis_cli.get("jobbole_counts")
    

    热门搜索 zset -- topn的操作 -- zincrby

            搜索关键词之后
            redis_cli.zincrby("search_keywords_set",keywords)
    
            按照逆序排列
            topn_search = redis_cli.zrevrangebyscore("search_keywords","+inf","-inf",start=0,num=5)
    

    3 python api |redispy

    安装

    pip install redis
    

    基本使用:

    import redis
    
    r = redis.StrictRedis(port=6379,host='localhost')  # 新版本的redis命令
    
    # r = redis.Redis(port=6379,host='localhost')  # 兼容老版本
    
    user = r.get('animal')
    print(user)
    

    hmset 
    
    	dic = {
    	'name':'alex',
    	'age':15
    	}
    	ret = client.hmset('users',dic)
    
    hmget
    
    	ret = client.hmget('users',['name','age'])
    
    lpush
    	l1 = ['a','b']
    	client.lpush('list1',*l1)
    

    连接池:

    	redis 自带有连接池:
    
    		也可以重新指定:
    
    			pool = redis.ConnectionPool(port=6379,host='localhost')
    			client = redis.Redis(connection_pool=pool)
    

    pipelines: 批量进行命令处理

    pipe = client.pipeline()
    
    pipe.set('','')
    pipe.set('','')
    
    pipe.get('')
  • 相关阅读:
    写给想要做自动化测试的人(更新篇)
    testng 教程之使用参数的一些tricks配合使用reportng
    testng教程之testng.xml的配置和使用,以及参数传递
    testng 教程
    博客园计算园龄不正确,请管理员确认
    selenium 总结篇,常见方法和页面元素的操作
    测试登录界面
    在测试框架中使用Log4J 2
    泡泡一分钟:Geometric and Physical Constraints for Drone-Based Head Plane Crowd Density Estimation
    Look Further to Recognize Better: Learning Shared Topics and Category-Specific Dictionaries for Open-Ended 3D Object Recognition
  • 原文地址:https://www.cnblogs.com/big-handsome-guy/p/8618164.html
Copyright © 2011-2022 走看看