操作 redis
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
import redis
redisPool = redis.ConnectionPool(host = '192.168.100.50' , port = 6379 , db = 8 )
redis = redis.Redis(connection_pool = redisPool)
redis. set ( 'key' , 'values' )
redis.get( 'com' )
redis.append( 'keys' , 'values' )
redis.delete( 'keys' )
print (redis.getset( 'name' , 'Mike' )) #赋值name为Mike并返回上一次的value
print (redis.mget([ 'name' , 'age' ])) #输出name键和age键的value
print (redis.setnx( 'newname' , 'james' )) #如果键值不存在,则赋值
print (redis.mset({ 'name1' : 'smith' , 'name2' : 'curry' })) #批量赋值
print (redis.msetnx({ 'name3' : 'ltf' , 'name4' : 'lsq' })) #不存在才批量赋值
print (redis.incr( 'age' , 1 )) #age对应的value 加1
print (redis.decr( 'age' , 5 )) #age对应的value 减5
print (redis.append( 'name4' , 'is a sb' )) #在name4的value后追加 is a sb 返回字符串长度
print (redis.substr( 'name' , 1 , 4 )) #截取键 name
print (redis.sadd( 'tags' , 'Book' , 'Tea' , 'Coffee' )) #返回集合长度 3
print (redis.srem( 'tags' , 'Book' )) #返回删除的数据个数
print (redis.spop( 'tags' )) #随机删除并返回该元素
print (redis.smove( 'tags' , 'tags1' , 'Coffee' ))
print (redis.scard( 'tags' )) # 获取tags集合的元素个数
print (redis.sismember( 'tags' , 'Book' )) # 判断Book是否在tags的集合中
print (redis.sinter( 'tags' , 'tags1' )) # 返回集合tags和集合tags1的交集
print (redis.sunion( 'tags' , 'tags1' )) # 返回集合tags和集合tags1的并集
print (redis.sdiff( 'tags' , 'tags1' )) # 返回集合tags和集合tags1的差集
print (redis.smembers( 'tags' )) # 返回集合tags的所有元素
print (redis.hset( 'price' , 'cake' , 5 )) # 向键名为price的散列表添加映射关系,返回1 即添加的映射个数
print (redis.hsetnx( 'price' , 'book' , 6 )) # 向键名为price的散列表添加映射关系,返回1 即添加的映射个数
print (redis.hget( 'price' , 'cake' )) # 获取键名为cake的值 返回5
print (redis.hmset( 'price' ,{ 'banana' : 2 , 'apple' : 3 , 'pear' : 6 , 'orange' : 7 })) #批量添加映射
print (redis.hmget( 'price' , [ 'apple' , 'orange' ])) # 查询apple和orange的值 输出 b'3',b'7'
print (redis.hincrby( 'price' , 'apple' , 3 )) #apple映射加3 为6
print (redis.hexists( 'price' , 'banana' )) # 在price中banana是否存在 返回True
print (redis.hdel( 'price' , 'banana' )) #从price中删除banana 返回1
print (redis.hlen( 'price' )) # 输出price的长度
print (redis.hkeys( 'price' )) # 输出所有的映射键名
print (redis.hvals( 'price' )) # 输出所有的映射键值
print (redis.hgetall( 'price' )) # 输出所有的映射键对
print (redis.rpush( 'list' , 1 , 2 , 3 )) #向键名为list的列表尾部添加1,2,3 返回长度
print (redis.lpush( 'list' , 0 )) #向键名为list的列表头部添加0 返回长度
print (redis.llen( 'list' )) #返回列表的长度
print (redis.lrange( 'list' , 1 , 3 )) #返回起始索引为1 终止索引为3的索引范围对应的列表
print (redis.lindex( 'list' , 1 )) #返回索引为1的元素-value
print (redis.lset( 'list' , 1 , 5 )) #将list的列表索引为1的重新赋值为5
print (redis.lpop( 'list' )) #删除list第一个元素
print (redis.rpop( 'list' )) #删除list最后一个元素
print (redis.blpop( 'list' )) #删除list第一个元素
print (redis.brpop( 'list' )) #删除最后一个元素
print (redis.rpoplpush( 'list' , 'list1' )) #删除list的尾元素并将其添加到list1的头部
|
消息队列使用例子
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
import redis
import json
redisPool = redis.ConnectionPool(host = '192.168.100.50' , port = 6379 , db = 8 )
client = redis.Redis(connection_pool = redisPool)
# 顺序插入五条数据到redis队列,sort参数是用来验证弹出的顺序
while True :
num = 0
for i in range ( 0 , 100 ):
num = num + 1
# params info
params_dict = { "name" : f "test {num}" , "sort" :num}
client.rpush( "test" , json.dumps(params_dict))
# 查看目标队列数据
result = client.lrange( "test" , 0 , 100 )
print (result)
import time
time.sleep( 10 )
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
|
import redis
import time
import multiprocessing
import time
import os
import random
redisPool = redis.ConnectionPool(host = '192.168.100.50' , port = 6379 , db = 8 )
client = redis.Redis(connection_pool = redisPool)
def test1(msg):
t_start = time.time()
print ( "%s开始执行,进程号为%d" % (msg, os.getpid()))
time.sleep(random.random() * 2 )
t_stop = time.time()
print ( "%s执行完成,耗时%.2f" % (msg, t_stop - t_start))
while True :
number = client.llen( 'test' )
print ( "现在的队列任务 条数是 " , number)
p = 100
if number > p - 1 :
print ( "-----start-----" )
a = []
for i in range (p):
result = client.lpop( "test" )
a.append(result)
print ( "每10条读取一次" , a)
po = multiprocessing.Pool(p)
for i in range ( 0 , p):
# Pool().apply_async(要调用的目标,(传递给目标的参数元祖,))
# 每次循环将会用空闲出来的子进程去调用目标
po.apply_async(test1, (a[i],))
po.close() # 关闭进程池,关闭后po不再接收新的请求
po.join() # 等待po中所有子进程执行完成,必须放在close语句之后
print ( "-----end-----" )
time.sleep( 2 )
elif number < p and number > 0 :
print ( "-----start-----" )
a = []
for i in range (number):
a = []
result = client.lpop( "test" )
a.append(result)
print ( "小于10条的 读取一次 " , a)
po = multiprocessing.Pool(number)
for i in a:
# Pool().apply_async(要调用的目标,(传递给目标的参数元祖,))
# 每次循环将会用空闲出来的子进程去调用目标
po.apply_async(test1, (a,))
po.close() # 关闭进程池,关闭后po不再接收新的请求
po.join() # 等待po中所有子进程执行完成,必须放在close语句之后
print ( "-----end-----" )
time.sleep( 2 )
elif number = = 0 :
print ( "没有任务需要处理" )
time.sleep( 2 )
else :
time.sleep( 2 )
|
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:https://blog.51cto.com/hequan/2466602