Redis的基本类型及连接Redis数据库的代码

本文深入讲解Redis中的五种数据类型:字符串、哈希、列表、集合及有序集合。包括每种类型的常用操作命令,如设置、获取、删除、查询等,并提供Python代码示例,帮助读者快速掌握Redis数据结构的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

基本类型

Set集合,无重复

List列表,有序

哈希 hashes


基本类型

Redis 支持五种数据类型: string(字符串) 、 hash(哈希)、list(列表) 、 set(集合) 及 zset(sorted set: 有序集合)

import redis

# 普通连接              ip地址              端口        密码/身份       储存位置  
conn = redis.Redis(host="192.168.23.166", port=6379,password="123456",db=0)
conn.set("x1","hello",ex=5) # ex代表seconds,px代表ms
val = conn.get("x1")
print(val)


import redis

# 连接池
pool = redis.ConnectionPool(host="192.168.23.166", port=6379,password="123456",max_connections=1024)
conn = redis.Redis(connection_pool=pool)
print(conn.get("x1"))

Set集合,无重复

sadd(name,values)
#给name对应的集合中添加元素
#       a目录  set_name集合,aa,bb是值
r.sadd("a:set_name","aa","bb")
 
smembers(name)
#获取name对应的集合的所有成员
 
scard(name)
#获取name对应的集合中的元素个数
 
r.scard("set_name")
sinter(keys, *args)
# 获取多个name对应集合的并集
 
r.sadd("set_name","aa","bb")
r.sadd("set_name1","bb","cc")
r.sadd("set_name2","bb","cc","dd")
 
print(r.sinter("set_name","set_name1","set_name2"))
#输出:{bb}
 
sismember(name, value)
#检查value是否是name对应的集合内的元素
 
spop(name)
#随机删除并返回指定集合的一个元素
 
sunion(keys, *args)
#获取多个name对应的集合的并集
 
r.sunion("set_name","set_name1","set_name2")
srem(name, value)  删除集合中的某个元素
r.srem("set_name", "aa")

List列表,有序

print r.lpush("1",1)  #输出的结果是1
print r.lpush("1",1)  #输出的结果是2
print r.lpush("1",2,3,4)  #输出的结果是5

print r.set("2",1)   #输出的结果是 True
print r.lpush("2",2)     #输出的结果是 redis.exceptions.ResponseError: WRONGTYPE Operation against a key holding the wrong kind of value,原因是键 2 是字符串类型,我们用list中的lpush给他添加元素

Rpush 命令用于将一个或多个值插入到列表的尾部(最右边)。

print r.rpush("2",1)     #输出的结果是1
print r.rpush("2",2,3)   #输出的结果是3
print r.rpush("2",4,5)   #输出的结果是5

Blpop 命令移出并获取列表的第一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。

print r.rpush("3",1,2,3,4,5,6,)      #输出的结果是6
print r.blpop("3")                   #输出的结果是('3', '1')
print r.blpop("3")                   #输出的结果是('3', '2')
print r.blpop("3")                   #输出的结果是('3', '3')
print r.blpop("4",timeout=2)         #因为键 4 不存在,所以2秒后输出的结果是None

Brpop 命令移出并获取列表的最后一个元素

print r.rpush("4",1,2,3,4,5,6,)      #输出的结果是6
print r.brpop("4")      #输出的结果是('4', '6')
print r.brpop("4")      #输出的结果是('4', '5')
print r.brpop("4")      #输出的结果是('4', '4')
print r.brpop("5",timeout=2)      #因为键 4 不存在,所以2秒后输出的结果是None

Brpoplpush 命令从列表中弹出一个值,将弹出的元素插入到另外一个列表中并返回它; 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止

print r.rpush("11",1,2,3)      #输出的结果是3
print r.rpush("22",4,5,6,)      #输出的结果是3
print r.brpoplpush(src="11",dst="22",timeout=2)  #输出的结果是3
print r.brpoplpush(src="44",dst="22",timeout=2)  #键44 不存在,输出的结果是None

Lindex 命令用于通过索引获取列表中的元素。你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。

print r.rpush("6",1,2,3)      #输出的结果是3
print r.lindex("6",1)        #输出的结果是2
print r.lindex("6",2)        #输出的结果是3
print r.lindex("6",3)        #输出的结果是None
print r.lindex("6",4)        #输出的结果是None
print r.lindex("6",-1)       #输出的结果是3

Linsert 命令用于在列表的元素前或者后插入元素。

print r.rpush("7",1)      #输出的结果是1
print r.rpush("7",2)      #输出的结果是2
print r.linsert("7","BEFORE","2",12)    #输出的结果是2

Llen 命令用于返回列表的长度。 如果列表 key 不存在,则 key 被解释为一个空列表,返回 0 。 如果 key 不是列表类型,返回一个错误。

print r.llen("8")       #key 不存在,输出的结果是0
print r.rpush("8",1)    #输出的结果是1
print r.llen("8")       #输出的结果是1
print r.rpush("8",2,3)    #输出的结果是3
print r.llen("8")       #输出的结果是3

Lpop 命令用于移除并返回列表的第一个元素。

print r.lpop("9")       #输出的结果是None
print r.rpush("9",1)    #输出的结果是1
print r.rpush("9",2)    #输出的结果是2
print r.lpop("9")       #输出的结果是1

https://www.cnblogs.com/zl1991/p/10552160.html

哈希 hashes

  • HDEL:删除对应哈希(Hash)表的指定键(key)的字段,hdel(self, name, key)
  • HEXISTS:检测哈希(Hash)表对应键(key)字段是否存在,返回布尔逻辑,hexists(self, name, key)
  • HGET:获取哈希(Hash)指定键(key)对应的值,hget(self, name, key)
  • HGETALL:获取哈希(Hash)表的键-值对(key-value pairs),返回python字典类型数据,hgetall(self, name)
  • HINCRBY:为哈希表(Hash)指定键(key)对应的值(key)加上指定的整数数值(int,可为负值)hincrby(self>, name, key, amount=1),Redis 中本操作的值被限制在 64 位(bit)有符号数字。
  • HKEYS:返回哈希表(Hash)对应键(key)的数组(Python称之为列表List),hkeys(self, name)
  • HLEN: 获取哈希表(Hash)中键-值对(key-value pairs)个数,hlen(self, name)
  • HMGET:获取哈希表(Hash)中一个或多个给点字段的值,不存在返回nil(Redis命令行)/None(Python),hmget(self, name, keys),其中keys可以为列表(list)
  • HMSET:设置对个键-值对(key-value pairs)到哈希表(Hash)中,python输入值(mapping)为字典(dictionary)类型,hmset(self, name, mapping)
  • HSET:为哈希表(Hash)赋值,若键(key)存在值(value)则覆盖,不存在则创建,hset(self, name, key, value)
  • HSETNX:为哈希表(Hash)不存值(value)的键(key)赋值,存在操作无效,对应值(value)无变化,hsetnx(self, name, key, value)
  • HVALS:返回哈希表(Hash)对应值(value)的列表,hvals(self, name)
  • HINCRBYFLOAT:为哈希表 key 中的指定字段的浮点数值加上增量 increment ,hincrbyfloat(self, name, key, amount=1.0)
#!/usr/bin/python
# -*- coding:utf-8 -*-
# __author__ = 'Jack'

pool = redis.ConnectionPool(host='127.0.0.1', port=6379)
r = redis.Redis(connection_pool=pool)
r.flushall()  # 清空Redis

r.hset('n1', 'k1', 'v1')  # hset(name, key, value),name对应的hash中设置一个键值对(不存在,则创建;否则,修改)
print(r.hget('n1', 'k1'))
r.hmset('n2', {'k1': 'v1', 'k2': 'v2', 'k3': 'v3'})  # hmset(name, mapping),在name对应的hash中批量设置键值对
print(r.hmget('n2', 'k2'))
print(r.hgetall('n2'))  # 获取name对应hash的所有键值
print(r.hlen('n2'))  # 获取name对应的hash中键值对的个数
print(r.hkeys('n2'))  # 获取name对应的hash中所有的key的值
print(r.hvals('n2'))  # 获取name对应的hash中所有的value的值
print(r.hexists('n2', 'k4')) # 检查name对应的hash是否存在当前传入的key
r.hdel('n2', 'k3')  # 将name对应的hash中指定key的键值对删除
r.hset('n3', 'k1', 1)
r.hincrby('n3', 'k1', amount=1)  # hincrby(name, key, amount=1),自增name对应的hash中的指定key的value的值,不存在则创建key=amount
print(r.hgetall('n3'))

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

海人001

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值