python 操作redis的库 python redis数据库_redis 自增


目录

  • 前言
  • Redis GUI 工具
  • Redis 遇上 Docker
  • Redis string
  • Redis hash
  • Redis list
  • Redis set
  • Redis zset
  • 后记

前言

前面一篇文章介绍了 MongoDB 的库,我把 MySQL 放在了最后面,这篇文章继续介绍 Redis 的操作。Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。接下来会简单介绍一下,Python 与 Redis 的化学反应。


python 操作redis的库 python redis数据库_redis连接工具_02


Redis GUI 工具

首先介绍一款 Redis 的 GUI 工具 Medis,初学 Redis 用这个来查看数据真的很爽。可以即时看到数据的增删改查,不用操作命令行来查看。


python 操作redis的库 python redis数据库_python 操作redis的库_03


主界面


python 操作redis的库 python redis数据库_Redis_04


操作界面图

Redis 遇上 Docker

能跟 Docker 扯上关系的,我都会粗略地说一下。这里主要贴一贴配置代码,docker-compose 代码如下。


version: '3'
services:
  redis_container:
    image: redis
    command: redis-server --requirepass yourpassword # 配置 Redis 密码
    ports:
      - "6378:6379" # 映射端口
    volumes:
      - /your/path/data:/data


启动命令


docker-compose up -d


Redis string

install


pip install redis


连接


# 普通连接
r = redis.StrictRedis(host='localhost', port=6379, db=0)
r = redis.StrictRedis(host='localhost', port=6379, password="your password", db=0)

# 连接池
"""
redis-py 使用 connection pool 来管理对一个 redis server 的所有连接,避免每次建立、释放连接的开销。默认,每个Redis实例都会维护一个自己的连接池,这样就可以实现多个 Redis 实例共享一个连接池
"""
# host 是 redis 服务 ip,默认端口是6379
pool = redis.ConnectionPool(host='localhost', port=6379,decode_responses=True)  
r = redis.Redis(connection_pool=pool)


增加


set(name, value, ex=None, px=None, nx=False, xx=False)

在Redis中设置值,默认,不存在则创建,存在则修改
参数:
ex,过期时间(秒)
px,过期时间(毫秒)
nx,如果设置为True,则只有name不存在时,当前set操作才执行
xx,如果设置为True,则只有name存在时,当前set操作才执行
# 设置过期时间为 1 秒
r.set('foo', 'zone', ex=1)
# 效果同上
r.setex('foo', 'zone', 1)
# 效果同上
r.psetex('foo', 1000, 'zone')

print(r.get('foo'))

# 休眠两秒后,再打印输出
time.sleep(2)
print(r.get('foo'))


查找


get(key)
普通查找
print(r.get('foo'))
mget(keys, *args)
批量查找
# 批量获取
print(r.mget("k1", "k2"))  # 一次取出多个键对应的值
print(r.mget("k1"))


获取子序列


getrange(key, start, end)
获取子序列(根据字节获取,非字符)
参数:
name,Redis 的 name
start,起始位置(字节)
end,结束位置(字节)
# 一个汉字3个字节 1个字母一个字节
r.set("name", "zonezone")
print(r.getrange('name', 0, 3))
# 获取所有字节
print(r.getrange('name', 0, -1))


python 操作redis的库 python redis数据库_python 操作redis的库_05


获取结果

修改

原始值 zonezone ,修改后变为 zone is a boy


setrange(name, offset, value)
修改字符串内容,从指定字符串索引开始向后替换(新值太长时,则向后添加)
参数:
offset,字符串的索引,字节(一个汉字三个字节)
value,要设置的值
r.set("name", "zonezone")
r.setrange("name", 4, " is a boy")
print(r.get("name"))


python 操作redis的库 python redis数据库_redis连接工具_06


修字符串成功

返回相应 key 的字符串长度


r.set("name", "zonezone")
print(r.strlen("name"))


自增 name 对应的值(int)


incr(self, name, amount=1)
自增 name对应的值,当name不存在时,则创建name=amount,否则,则自增。
参数:
name,Redis的name
amount,自增数(必须是整数)
r.set("age", 123)
print(r.get("age"))
r.incr("age", amount=1)
print(r.get("age"))


python 操作redis的库 python redis数据库_redis连接工具_07


自增成功

自增 name 对应的值(float)


incrbyfloat(self, name, amount=1.0)
自增 name对应的值,当name不存在时,则创建name=amount,否则,则自增。
参数:
name,Redis的name
amount,自增数(浮点型)
r.set("age", 123.0)
print(r.get("age"))
r.incrbyfloat("age", amount=0.2)
print(r.get("age"))


python 操作redis的库 python redis数据库_python 操作redis的库_08


自减 name 对应的值


r.set("age", 123)
r.decr("age", amount=1) # 递减1
print(r.mget("foo1", "foo4"))


追加内容


append(key, value)
在redis name对应的值后面追加内容
参数:
key, redis的name
value, 要追加的字符串