Fork me on GitHub

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

posted @ 2018-03-21 17:02  派对动物  阅读(299)  评论(0)    收藏  举报
Top