redis有16个逻辑数据库(编号db0到db15),每个逻辑数据库数据是隔离的,默认db0。选择第n个逻辑数据库,命令select n ,python连接时可指定数据库编号(0~15)。
Windows下安装部署redis:
Windows环境搭建最新版NoSQL数据库Redis数据存储服务_zhangphil的博客-CSDN博客(1)下载安装最新Windows版的Redis。Redis官方目前没有直接给出Windows版本的发行版本,网上一搜,给出的多数是老旧的微软在2016年制作的Windows版本Redis发行版本。现在github上有一个,专注于Windows版本的Redis发行,跟进比较及时,最新版的Redis之Windows版本,链接地址:Releases · tporadowski/redis · GitHubhttps://github.com/tporadowski/redis/releases下载解压https://blog.csdn.net/zhangphil/article/details/122535147
(1)为python安装支持库:
pip install redis
(2)连接redis
第一种方式,直连:
import redis
def redis_opt():
redis_conn = redis.Redis(host='127.0.0.1', port=6379, password='', db=6)
print(redis_conn.client_id())
第二种方式,连接池:
import redis
def redis_opt():
redis_pool = redis.ConnectionPool(host='127.0.0.1', port=6379, password='', db=6)
redis_conn = redis.Redis(connection_pool=redis_pool)
print(redis_conn.client_id())
(3)对redis数据库进行读写操作。
import redis
def redis_opt():
redis_pool = redis.ConnectionPool(host='127.0.0.1', port=6379, password='', db=6)
redis_conn = redis.Redis(connection_pool=redis_pool)
key = 'data'
my_data = {"name": 'fly', 'year': 2022}
redis_conn.set(key, str(my_data))
print(redis_conn.get(key))
如图:
更新操作:
key = 'data'
my_data = {'name': 'fly', 'year': 2022}
redis_conn.set(key, str(my_data))
my_data = {'name': 'phil', 'year': 2020}
redis_conn.getset(key, str(my_data))
追加操作:
redis_pool = redis.ConnectionPool(host='127.0.0.1', port=6379, password='', db=6)
redis_conn = redis.Redis(connection_pool=redis_pool)
key = 'data'
redis_conn.set(key, 'hello,')
redis_conn.append(key, 'world')
lpush 列表左侧追加值
key = 'data'
redis_conn.lpush(key, 2020, 2021, 2022)
redis_conn.lpush(key, 2023)
如果换成右侧追加,相当于尾部追加:
key = 'data'
redis_conn.rpush(key, 2020, 2021, 2022)
redis_conn.rpush(key, 2023)
lpushx(name, value),如果键name存在时候才最近,否则不。
key = 'data'
redis_conn.rpush(key, 2020, 2021, 2022)
redis_conn.rpush(key, 2023)
print(redis_conn.llen(key)) # 列表长度
# AFTER,之后。BEFORE之前。
v = redis_conn.linsert(name=key, where='AFTER', refvalue=2020, value='1999')
print(v)
key = 'data'
redis_conn.rpush(key, 2020, 2021, 2022)
redis_conn.rpush(key, 2023)
print(redis_conn.llen(key)) # 列表长度
v = redis_conn.lset(name=key, index=2, value='1999')
print(v)
key = 'data'
redis_conn.rpush(key, 2020, 2021, 2022)
redis_conn.rpush(key, 2023)
print(redis_conn.llen(key)) # 列表长度
v = redis_conn.lrange(name=key, start=1, end=3)
print(v)
输出:
4
[b'2021', b'2022', b'2023']
lpop(name)
lrem(name, value, num)
如果是从右向作,需要把num的值改为负数即可,比如-3,从右向左删掉3个重复的value。
ltrim(name, start, end)
rpoplpush(src, dst)
brpoplpush(src, dst, timeout=0)
key = 'data'
redis_conn.hset(key, 'name', 'fly')
redis_conn.hset(key, 'year', 2022)
print(redis_conn.hget(key, 'year'))
输出:
b'2022'
以下注意name和key的区分。name是作为在redis中的“大键”,key是在redis中存储名为name的数据块中的键。
my_name = 'my_data'
my_key = 'my_key'
val = {'name': 'fly', 'year': 2022}
json_val = json.dumps(val)
redis_conn.hset(name=my_name, key=my_key, value=json_val)
print(redis_conn.hgetall(my_name))
print(redis_conn.hkeys(my_name))
print(redis_conn.hvals(my_name))
输出:
{b'my_key': b'{"name": "fly", "year": 2022}'}
[b'my_key']
[b'{"name": "fly", "year": 2022}']
my_name = 'my_data'
my_key = 'my_key'
val = {'name': 'fly', 'year': 2022}
json_val = json.dumps(val)
redis_conn.hset(name=my_name, key=my_key, value=json_val)
print(redis_conn.hgetall(my_name))
print(redis_conn.hkeys(my_name))
print(redis_conn.hvals(my_name))
print(redis_conn.hexists(name=my_name, key=my_key))
print(redis_conn.hdel(my_name, my_key)) #删除my_name数据块里面的my_key键值对
my_name = 'my_data'
my_key = 'my_key'
val = {'name': 'fly', 'year': 2022}
json_val = json.dumps(val)
redis_conn.hset(name=my_name, key=my_key, value=json_val)
print(redis_conn.hgetall(my_name))
redis_conn.expire(name=my_name, time=5) # 超过5秒自动删除。
v = redis_conn.exists('my_name')
rename(src, dst)
move(name, db)
type(name)