redis普通连接和连接池、redis字符串类型、redis hash类型、dedis列表类型

redis普通连接和连接池

redis 五大数据类型:

  字符串,hash,列表,集合,有序集合

python代码作为客户端

安装模块:pip install redis

 普通连接

 直接连接

 

连接池

把池写成单例----》整个项目中,只有这一个实例(对象)---》python 中实现单例的5种方式---》模块导入的方式
POOL = redis.ConnectionPool(host='127.0.0.1', port=6379, max_connections=50)

 从pool文件中导入

 

redis字符串类型

必须掌握:

set
get
getrange
strlen

常用方法:

'''
1 set(name, value, ex=None, px=None, nx=False, xx=False)
2 setnx(name, value)
3 setex(name, value, time)
4 psetex(name, time_ms, value)
5 mset(*args, **kwargs)
6 get(name)
7 mget(keys, *args)
8 getset(name, value)
9 getrange(key, start, end)
10 setrange(name, offset, value)
11 setbit(name, offset, value)
12 getbit(name, offset)
13 bitcount(key, start=None, end=None)
14 bitop(operation, dest, *keys)
15 strlen(name)
16 incr(self, name, amount=1)
# incrby
17 incrbyfloat(self, name, amount=1.0)
18 decr(self, name, amount=1)
19 append(key, value)
'''

redis hash类型

hash 类型,就是咱们python中的字典类型, 数据结构:数据的组织形式 底层存储 数组---》根据key值使用hash函数得到结构,存到数组中

字典的key值必须可hash
字典的key值必须是不可变数据类型
hash 类型无序,跟放的先后顺序无关的
python 的字典是 有序的 字典+列表

必须掌握:

hset
hget
hlen  
hexists
hincrby
hscan_iter

所有方法:

'''
1 hset(name, key, value)
2 hmset(name, mapping)
3 hget(name,key)
4 hmget(name, keys, *args)
5 hgetall(name)
6 hlen(name)
7 hkeys(name)
8 hvals(name)
9 hexists(name, key)
10 hdel(name,*keys)
11 hincrby(name, key, amount=1)
12 hincrbyfloat(name, key, amount=1.0)
13 hscan(name, cursor=0, match=None, count=None)
14 hscan_iter(name, match=None, count=None)

'''

 

redis列表类型

必须掌握:

lpush
rpush
llen
lrange
lpop

所有方法:

1 lpush(name, values)
2 rpush(name, values) 表示从右向左操作
3 lpushx(name, value)
4 rpushx(name, value) 表示从右向左操作
5 llen(name)
6 linsert(name, where, refvalue, value))
7 r.lset(name, index, value)
8 r.lrem(name, value, num)
9 lpop(name)
10 rpop(name) 表示从右向左操作
11 lindex(name, index)
12 lrange(name, start, end)
13 ltrim(name, start, end)
14 rpoplpush(src, dst)
15 blpop(keys, timeout)
16 r.brpop(keys, timeout),从右向左获取数据
17 brpoplpush(src, dst, timeout=0)

 

 

列表:lrang,把所有值都拿回来 lrang(key,0,-1)
-使用生成器,写一个分批获取列表所有值的生成器

 

补充

1、redis模块封装了很多方法 ---》跟命令是一一对应的

2、以后如果遇到redis这个模块没有封装的方法,直接使用execute_command

3、strlen(name) 字节长度

  len(字符串) 字符串长度

  把字符串转成bytes格式,再len

4、web框架(django),我们没有开启多线程,但是具备并发能力,内部一定是开了进程、线程

  谁开启的多线程,支持并发?符合wsig协议的web服务器:wsgiref,uwsgi

  多个人同时访问一个接口,这个接口操作mysql,有几个人,就会创建几个mysql的连接

  django原生是没有使用数据库连接池的

  借助于第三方:dbutils

posted @ 2023-10-17 15:20  别管鱼油我了  阅读(9)  评论(0编辑  收藏  举报