Redis 补充 Redis 补充


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 .......

Redis 补充
Redis 补充

(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('')