Python:让我们来浅学下Redis吧

🍟Python玩转–Redis


😉前言

提示:
🎂文章为个人学习心得 如有冒犯 call me!
🛴快点做!!!!
🍕参考文章:https://mp.weixin.qq.com/s/EiV2jVMm62bDo9518ul3pQ


🍣学习导图

在这里插入图片描述

①💎概述

1.👻Redis??

🌭①Redis 是一个高性能的key-value数据库
🪂 ②支持存储的value类型有:
1️⃣string(字符串)
2️⃣list(链表)
3️⃣set(集合)
4️⃣zset(sorted set --有序集合)
5️⃣hash(哈希类型)

💤简单来说,redis就是把数据库存储在内存里,然后隔一断时间再从内存备份到硬盘以防止数据丢失;由于访问内存,所以访问速度特别快,一般用来做缓存

2.🎐Redis能做什么

💥将一些热点数据存储到Redis中,要用的时候,直接从内存取,极大的提高了速度和节约了服务器的开销。
1️⃣会话缓存(最常用)
2️⃣消息队列(支付)
3️⃣活动排行榜或计数
4️⃣发布,订阅消息(消息通知)
5️⃣商品列表,评论列表

②🧤准备工作

1.🥯python安装

https://www.runoob.com/w3cnote/pycharm-windows-install.html

2.🍣pycharm安装

https://www.runoob.com/python/python-install.html

3.🌭Redis安装

😎windos版:

https://www.runoob.com/redis/redis-install.html

🤤Linux版:

https://github.com/MicrosoftArchive/redis/releases

4.🧶安装Redis库

🍤使用pycharm进入Terminal

pip install redis

😀----😃----连----😃----接----😄----线----😆
在这里插入图片描述

🎣③基本操作

1.🥩使用python连接redis

🍳先启动redis服务器
😀----😃----连----😃----接----😄----线----😆
🌮普通连接

import redis
r = redis.Redis(host='127.0.0.1', port=6379)
r.set('hello', 'world')     #设置键值对 key:hello value:world
print(r.get('hello'))       #获取键值对 value值

😀----😃----连----😃----接----😄----线----😆
在这里插入图片描述
🎨host:本机地址
🎑port:端口号(redis默认6379)
🎀password:密码(安装完后默认无密码)

😀----😃----连----😃----接----😄----线----😆
🎨连接池连接

import redis
pool = redis.ConnectionPool(host='127.0.0.1', port=6379)
r = redis.Redis(connection_pool=pool)
r.set('hello', 'world')     #设置键值对 key:hello value:world
print(r.get('hello'))       #获取键值对 value值

🥚关于中文乱码问题
🍞添加属性

decode_responses=True, charset='UTF-8'

😀----😃----连----😃----接----😄----线----😆
在这里插入图片描述

2.🌯stirng操作

😀----😃----连----😃----接----😄----线----😆

1.🍕方法 set

🥞设置key:value
🛴set(‘key’,‘value’)
1️⃣key值:不存在就创建
2️⃣key值:存在就修改value值

在这里插入图片描述
💫参数:
💦set(key,value,ex=None,px=None,nx=False,xx=False)
1️⃣ ex:过期时间(秒)
2️⃣ px:过期时间(毫秒)
3️⃣ nx:=True时,若key不存在时执行set()
4️⃣ xx:=True时,若key存在时执行set()

😀----😃----连----😃----接----😄----线----😆
骚操作↓
🍖设置过期时间(秒),这里是5秒过期

r.setex('key1',5,'value1')

🍖设置过期时间(毫秒),这里是1000耗秒过期

r.psetex("key2",1000,"value2")

2.🍔方法 mset

🌭批量设置key
🛴mset({‘key1’:‘value’,‘key2’:‘value2’})

r.mset({'key1':'value','key2':'value2'})
print(r.get('key1'))
print(r.get('key2'))

3.🍿方法 mget

🧂批量获取key
🛴mget(“key1”,“key2”)

#方法一
r.mset({'key1':'value','key2':'value2'})
print(r.mget("key1","key2"))
#方法二
key_list=['key1','key2']
print(r.mget(key_list))

4.🥓方法 getrange

🥚截取key值长度
🛴getrange({‘key1’,头序列号,尾序列号})

r.mset({'key1':'value','key2':'value2'})
print(r.getrange("key1",0,2))

5.🍳方法 append

🧇追加key值
🛴append(“key1”,“new_value”)

r.set('key1','value')
print(r.get("key1"))  
r.append("key1","new")
print(r.get("key1"))

5.🍳方法 strlen

🧈输出key值字符长度
🛴strlen(“key1”,“new_value”)

r.set("key1","aaaaa")
print(r.strlen("key1"))

3.🍚List操作

1.🚍方法 lpush and rpush

🥠元素按顺序从头部添加 若 Key 存在则创建列表并添加进去 否则报错
🛴lpush(key,values)

r.lpush("key",1,2,3,4)
#return 4,3,2,1

😀----😃----连----😃----接----😄----线----😆
🥟元素按顺序从尾部开始添加 若 Key 存在则创建列表并添加进去 否则报错
🛴rpush(key,values)

r.rpush("key",1,2,3,4)
#return 1,2,3,4

2.🍘方法 lpushx and rpushx

🍙当 Key 存在时 从头部添加
🛴lpushx(key,value)

r.lpushx("key","aa")
r.lpushx("key","bb")
#return ['bb','aa']

😀----😃----连----😃----接----😄----线----😆
🍛当 Key 存在时 从尾部添加
🛴rpushx(key,value)

r.rpushx("key","aa")
r.rpushx("key","bb")
#return ['aa','bb']

3.🍜方法 llen

🍣返回 key的list元素的个数
🛴llen(key,索引值1,索引值2,索引值3)

llen("key",1,2,3)
#return 3

4.🍜方法 linsert

🍥指定列表前/后插人数据
🛴linsert(key, AFTER/BEFORE, refvalue, value))
💫参数:
💦linsert(“key”, AFTER/BEFORE, 2, “aaa”))
1️⃣ key:key 名字
2️⃣ where:AFTER/BEFORE 插入前面还是后面
3️⃣ refvalue:指定插入列表中的序列值
4️⃣ value:插入 value 值

5.🍢方法 lset

🧆指定列表中索引位置赋值
🛴 r.lset(key, index, value)

r.lset("key",1,"cc")
#return ["aa","cc"]

6.🍢方法 lpop

🍲移除列表的左侧第一个元素且返回此元素
🛴lpop(key)

7.🥣方法 lindex

🍦根据索引值获取列表中的元素
🛴lindex(name, index)

r.lindex("key",1)
#return aa

8.🍧方法 lrange

🍨通过切片操作获取元素
🛴lrange(key, start, end)

9.🍪方法 ltrim

🍰删除列表中索引值之外的值
🛴ltrim(name, start, end)

4.🧁Hash操作

1.🍠hash?

Redis中的hash在内存中类似一个key对应一个dict来存储
🍬hash中设置键值对 存在则修改值 不存在则创建并赋值
🛴r.hset(“dict”,“key”,“value”)

r.hset("key10","a1","a2")
print(r.hget("key10","a1"))
#return a2

2.🍫hgetall、hmset和hmget

🍭获取字典中所有键值对
🛴hgetall(dict)

r.hset("key10","a1","a2")
print(r.hgetall("key10")) 
#return {'a1': 'a2'}

🍭批量设置键值对
🛴hmset(key,dict)

dic = {"c":"cc","d":"dd"}
r.hmset("key123",dic)
print(r.hget("key123","c")) 
#return cc

🍡批量获取键值对
🛴hmget(dict,key)

dic = {"c":"cc","d":"dd"}
r.hmset("key123",dic)
k_list=["c","d"]
print(r.hmget("key123",k_list))
# return ['cc', 'dd']
print(r.hmget("key11","c","d"))
# return ['cc', 'dd']

3.🍫hlen、hkeys和hvals

获取key个数
🛴r.hlen(“key123”)

dic = {"c":"cc","d":"dd"}
r.hmset("key123",dic)
print(r.hlen("key123"))
 #return 2

🍵获取所有key
🛴r.hkeys(“key123”)

dic = {"c":"cc","d":"dd"}
r.hmset("key123",dic)
print(r.hkeys("key123")) 
#return ['c', 'd']

🧉获取所有value
🛴r.hvals(“key123”)

dic = {"c":"cc","d":"dd"}
r.hmset("key123",dic)
print(r.hvals("key123")) 
#return ['cc', 'dd']

4.🍶hexists和hdel

🍾检查传入的key是否存在
🛴hexists(dict, key)

dic = {"c":"cc","d":"dd"}
r.hmset("key123",dic)
r.hexists("key123","c")
#return True

🍷删除指定的name
🛴hdel(dict,key)

dic = {"c":"cc","d":"dd"}
r.hmset("key123",dic)
r.hdel("key123","c")

6.🍸Set操作

🍺在Set集合中是不允许出现重复的列表

1.🍹sadd、smembers和scard

🍻在集合中添加元素
🛴sadd(key,value)
🥂获取集合中的元素
🛴smembers(key)
🥃获取集合中元素的个数
🛴scard(key)

r.sadd("key124","a")
r.sadd("key124","a","a")
print(r.smembers("key124"))
#return key1234
print(r.scard("key124"))
#return 1

2.🧊sdiff 和 sdiffstore

🍮筛选出在第一个key集合中且在其他集合里没有的元素
🛴sdiff(key)

r.sadd("key13","a1","a2","a4")
r.sadd("key14","a2","a3")
r.sadd("key15","a1","a2","a3")
print(r.sdiff("key13","key14","key15"))
#return {'a4'}

🍮筛选出在第一个key集合中且在其他集合里没有的元素后再加入新的集合里
🛴sdiffstore(key)

r.sdiffstore("key16","key13","key14","key15")
print(r.smembers("key16")) 
#return {'a4'}

3.🥤sinter和 sinterstore

🥢获取多个集合里的并集
🛴sinter(key)

r.sadd("key13","a1","a2","a4")
r.sadd("key14","a2","a3")
r.sadd("key15","a1","a2","a3")
print(r.sinter("key13","key14","key15"))
#return {'a2'}

🍽获取多个集合里的并集后加入到新的集合里
🛴sinterstore(newkey)

r.sinterstore("key17","key13","key14","key15")
print(r.smembers("key17")) 
#return:{'a2'}

4.🍴sismember、smove和 spop

🏺检查value是否是name对应的集合内的元素
🛴sismember(name, value)

r.sadd("key13", "a1", "a2", "a4")
print(r.sismember("key13","a1"))
# return True
print(r.sismember("key13","a5")) 
# return False

🥝将元素从一个集合里移到另外一个集合
🛴smove(src, dst, value)

r.sadd("key18", "a1", "a2", "a4")
r.sadd("key19", "a5")
r.smove("key18", "key19", "a2")
print(r.smembers("key19"))
#return {'a2', 'a5'}

🥥将元素从集合中移出并返回
🛴spop(name)

print(r.spop("key19")) 
#return a5
print(r.smembers("key19")) 
#return {'a2'}

5.🍇有序集合

🍈添加有序集合
🛴zadd(name, mapping)
🍉获取有序集合里元素的数量
🛴zcard(name)
🍊获取有序集合中分数在[min,max]之间的个数
🛴zcount(name, min, max)

r.zadd("key20", {"a": 10, "b": 3, "c": 8})
print(r.zcard("key20")) #return 3
print(r.zcount("key20", 2, 5)) #return 1
print(r.zcount("key20", 7, 15)) #return 1

7.🍍通用操作

🥭根据name删除redis中的任意数据类型
🛴delete(names)
🍎检测redis的name是否存在
🛴exists(name)
🍏根据
?等通配符匹配获取redis的name
🛴keys(pattern=’*’)
🍐为某个name设置超时时间
🛴expire(name ,time)
🍑重命名
🛴rename(src, dst)
🍒将redis的某个值移动到指定的db下
🛴move(name, db))
🍓随机获取一个redis的name(不删除)
🛴randomkey()
🍅获取name对应值的类型
🛴type(name)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值