跳转至

Flask 框架中使用 Redis (二)


2021-12-21 by dongnan

环境描述

详细信息请参考上一篇文章 Flask 框架中使用 Redis (一)

接下来用例子介绍如何使用 flask-redis 来操作 redis 服务器端。

举个栗子

使用方法与 redis 命令基本相同。

查询

dbsize
dbsize(**kwargs)
    Returns the number of keys in the current database

命令:
>>> redis_client.dbsize()
2
keys
keys(pattern='*', **kwargs)
    Returns a list of keys matching pattern

命令:
>>> redis_client.keys()
[b'city', b'age']
exists
exists(*names)
    Returns the number of names that exist

命令:
>>> redis_client.exists('age')
1                       # 存在返回1
>>> redis_client.exists('name')
0                       # 不存在返回0
get
get(name)
    Return the value at key name, or None if the key doesn’t exist

命令:
>>> redis_client.get('age')
b'18'                   # 类型为字节
>>> r = redis_client.get('name')
>>> type(r)
<class 'NoneType'>      # 不存在则为 NoneType

写入

set
 set(name, value, ex=None, px=None, nx=False, xx=False, keepttl=False, get=False, exat=None, pxat=None)
    Set the value at key name to value
    ex sets an expire flag on key name for ex seconds.
    px sets an expire flag on key name for px milliseconds.

命令:
>>> redis_client.set('new_name', 18, 600)   # 第3个参数是过期时间
True

缓存相关

ttl
ttl(name)
Returns the number of seconds until the key name will expire

命令:
>>> redis_client.ttl('name')
-2                  # key不存在
>>> redis_client.ttl('age')
-1                  # key存在,但没有设置过期时间
>>> redis_client.ttl('new_name')
563                 # key存在,返回剩余时间(秒)
expire
expire(name, time)
Set an expire flag on key name for time seconds. time can be represented by an integer or a Python timedelta object.

命令:
>>> redis_client.expire('age', 3600)
True

删除

delete
delete(*names)
    Delete one or more keys specified by names

命令:
redis_client.delete('city')
1               # 成功删除返回1

其它

存放字典类型数据,需要先转换下Json格式:

import json

# 字典类型
>>> r
{'000905': -8.08, '000300': -6.46, '000922': -0.98, '000932': -6.2, '000827': -10.81, '000986': 3.44, '399971': -15.85, '000985': -7.85, '000991': -13.41, 'HSI': 5.51}

# 写入时转换为 json格式字符串
>>> redis_client.set('index_yield_this_year', json.dumps(r), 600)
True

# 读取时转为 dict对象
>>> json.loads(redis_client.get('index_yield_this_year'))
{'000905': -8.08, '000300': -6.46, '000922': -0.98, '000932': -6.2, '000827': -10.81, '000986': 3.44, '399971': -15.85, '000985': -7.85, '000991': -13.41, 'HSI': 5.51}

参考

回到页面顶部