python redis缓存原理_python笔记-12 redis缓存

本文详细介绍了Python如何操作Redis缓存,包括Redis的基础知识、连接方式、字符串操作、哈希表、列表和有序集合的使用,以及发布订阅、缓存过期等关键功能。通过实例代码展示了Python中的各种Redis操作,帮助读者快速掌握Redis的使用。
摘要由CSDN通过智能技术生成

一、redis引入

1、简要概括redis

1.1 redis默认端口:6379

1.2 redis实现的效果:资源共享

1.3 redis实现的基本原理:不同的进程和一个公共的进程之间建立socket,用来实现完成不同进程之间的资源共享

1.4 redis是一个单线程异步执行的程序,其效率为每秒处理50-80w个请求

2、redis需要掌握的几大块内容

2.1 string操作

2.2 hash操作

2.3 list操作

2.4 set操作

2.5 sore set操作 (有序集合)

2.6  管道

2.7 发布订阅

3、redis的使用(安装方式及使用方式)

安装方式:此处不描述redis的安装方法了,windows使用msi格式直接安装后运行redis-cli.exe即可,linux中方式类似

使用方式:set与get

作为引入,此处先介绍set与get,set为设置一个string类型的变量,get为获取这个string类型变量的值

127.0.0.1:6379[1]> set k1 123OK127.0.0.1:6379[1]> set k2 456OK127.0.0.1:6379[1]>get k1"123"

127.0.0.1:6379[1]>get k2"456"

4、python中对redis的操作模块---redis

同样此处先描述get与set的使用,需要建立一个连接,标明redis服务器的ip和端口号

importredis

conn=redis.Redis(host='192.168.99.106',port='6379')#正常的set和get

conn.set('k1','v1')print(conn.get('k1'))

5、socket池的使用

通常,我们在进行redis操作的时候,需要多次设置值和取值,如果每次操作都进行socket连接,会有大量时间被浪费在建立连接的过程中。

此时,我们建立一个socket_pool,可以理解为预先将连接建立好,我们要对redis操作时,直接从pool中取出已有的连接即可操作,可以节省时间

importredis

pool=redis.ConnectionPool(host='127.0.0.1',port='6379')

conn=redis.Redis(connection_pool=pool)

二、redis中对string的操作

1、set与get,string类型的变量的设置与取值

linux或windows环境中

127.0.0.1:6379[1]> set k1 123OK127.0.0.1:6379[1]> set k2 456OK127.0.0.1:6379[1]>get k1"123"

127.0.0.1:6379[1]>get k2"456"

在python中

importredis

conn=redis.Redis(host='192.168.99.106',port='6379')#正常的set和get

conn.set('k1','v1')print(conn.get('k1'))

2、ex/px/nx/xx的使用,变量的一些附属参数

ex,设置变量的超时时间,单位为s

ps,设置变量的超时时间,单位为毫秒,ps

nx,设置变量,当变量不存在时,创建并设置变量,如果变量存在,不改变原来变量的值

xx,设置变量,如果变量不存在,不创建,如果变量存在,改变原来的变量值

linux或windows环境中

127.0.0.1:6379[1]> set k1 111nx

(nil)127.0.0.1:6379[1]>get k1"123"

127.0.0.1:6379[1]> set k1 111xx

OK127.0.0.1:6379[1]>get k1"111"

127.0.0.1:6379[1]>

在python中

#ex px nx xx

conn.set('key2','value',ex=4)

conn.set('key3','value',px=4)

conn.set('newname','value',xx=True)

conn.set('keyxx','value',nx=True)

3、setex/psetex/setnx(ex px nx的另一种使用方式)

linux或windows环境中

127.0.0.1:6379[1]> setex k1 3v1

OK

127.0.0.1:6379[1]> psetex k2 3v2

OK

在python中

#setex psetex setnx

conn.setex('keyex','xx',3)

conn.psetex('keypx',10000,'xx')#注意顺序

conn.setnx('keyxxx','xxx')

4、mset/mget 批量操作string变量的方法

linux或windows环境中

127.0.0.1:6379[1]> mset k3 333 k4 444OK127.0.0.1:6379[1]>mget k3 k41) "333"

2) "444"

在python中

#批量获取或修改mset mget#mset两种形式 key=value 或 字典#mget两种形式 key,key 或列表

conn.mset(key1='1',key2=2)

conn.mset({'key3':'3','key4':'4'})print(conn.mget('key1','key2'))#[b'1', b'2']

print(conn.mget(['key3','key4']))#[b'3', b'4']

5、getset 先获取原值再更改值

linux或windows环境中

127.0.0.1:6379[1]> keys *

1) "k4"

2) "k3"

127.0.0.1:6379[1]>get k4"444"

127.0.0.1:6379[1]> getset k4 555

"444"

127.0.0.1:6379[1]>get k4"555"

在python中

print(conn.getset('key1','111'))

6、Getrange、setrange切片与覆盖

linux或windows环境中

127.0.0.1:6379[1]> set kk 123456789OK127.0.0.1:6379[1]>get kk"123456789"

127.0.0.1:6379[1]> getrange kk 0 5

"123456"

127.0.0.1:6379[1]> setrange kk 5 0000(integer)9

127.0.0.1:6379[1]>get kk"123450000"

在python中

x='西班牙'.encode('utf-8')

conn.set('country',x)print(conn.getrange('country',0,2).decode())#西

print(conn.getrange('country',0,8).decode())#西班

y='葡萄'.encode('utf-8')

conn.setrange('country',0,y)print(conn.getrange('country',0,8).decode())#按字节来计算 汉字三个字节

7、Getbit、setbit、bitcount的组合使用

比较有趣的功能

0 1 1 0   0 0 0 1 -> a

0 1 1 0   0 0 1 0 -> b

0 1 1 0   0 0 1 1 -> c

0 1 1 0   0 1 0 0 -> d

linux或windows环境中

127.0.0.1:6379[1]>set xxx abcd

OK127.0.0.1:6379[1]> setbit xxx 6 1(integer) 0127.0.0.1:6379[1]>get xxx"cbcd"

127.0.0.1:6379[1]>

在python中,通过getbit,setbit,bitcount来统计在线人数,在线状态。有效节省空间

for i in range(23):print(i,'---》',conn.getbit('key1',i))#知道保存在线人数的方法

print(conn.get('key1'))print(conn.bitcount('key1'))#字符1和数字1在ascii码的不同表示

8、Incr,decr自增、自减的使用

linux或windows环境中

127.0.0.1:6379[1]>incr k

(integer)1

127.0.0.1:6379[1]>incr k

(integer)2

127.0.0.1:6379[1]>incr k

(integer)3

127.0.0.1:6379[1]>get k"3"

127.0.0.1:6379[1]>decr k

(integer)2

127.0.0.1:6379[1]>get k"2"

127.0.0.1:6379[1]>

在python中

>>> importredis>>> x=redis.Redis('127.0.0.1',port='6379')>>> x.incr('i1')1

>>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值