Flutter Redis数据库交互插件upstash_redis的使用
Flutter Redis数据库交互插件upstash_redis的使用
Upstash Redis
@upstash/redis
是一个基于HTTP/REST的Redis客户端,专为Dart设计,建立在 Upstash REST API 之上。
这个Dart包的设计灵感来源于官方的upstash-redis TypeScript库。更多文档可以在这里找到:GitHub仓库。
它是一个无连接(基于HTTP)的Redis客户端,适用于以下场景:
- 无服务器函数(AWS Lambda 等)
- Cloudflare Workers
- Fastly Compute@Edge
- 客户端侧Web/移动应用程序
- WebAssembly
- 其他更倾向于HTTP而非TCP的环境
查看 支持的API列表。
快速开始
安装
dart pub add upstash_redis
创建数据库
请在 upstash控制台 上创建一个新的Redis数据库。
基本用法
下面提供了一个完整的示例demo,展示了如何使用upstash_redis
进行基本的数据操作,包括字符串、有序集合、列表、哈希表和JSON对象等。
import 'package:upstash_redis/upstash_redis.dart';
Future<void> main() async {
// 使用从环境变量中读取的URL和Token初始化Redis客户端
final redis = Redis.fromEnv();
try {
// 字符串操作
print(await redis.set('name', 'rebaz', ex: 60));
print(await redis.get<String>('name'));
// 复杂对象操作
print(await redis.set(
'obj',
{
'v': {
'a': [1, 2],
'b': [3, 4]
}
},
ex: 60,
));
print(await redis.get<Map<String, Map<String, List<int>>>>('obj'));
// 设置名称时防止覆盖已有键值对
print(await redis.set('name', 'raouf', ex: 60, nx: true));
// 有序集合操作
print(await redis.zadd('z', score: 1, member: 'rebaz'));
print(await redis.zadd(
'z2',
scores: [
ScoreMember(score: 2, member: 'Mike'),
ScoreMember(score: 3, member: 'Ali'),
ScoreMember(score: 4, member: 'Jack'),
],
));
print(await redis.zrem('z2', ['Jack', 'Ali']));
// JSON操作
print(await redis.json.set('json', '$', {'counter': 1, 'hello': '', 'name': 're'}));
print(await redis.json.numincrby('json', r'$.counter', 1));
print(await redis.json.set('json', r'$.hello', '"world"'));
print(await redis.json.strappend('json', r'$.name', '"baz"'));
print(await redis.json.strlen('json', r'$.name'));
print(await redis.json.get('json', [r'$.name']));
} finally {
// 关闭Redis客户端
redis.close();
}
}
此代码段涵盖了多种常见的Redis数据类型操作,并展示了如何与Upstash Redis服务进行交互。确保替换示例中的URL和Token为实际创建的Upstash Redis实例信息。
贡献
如果您希望为upstash_redis
做出贡献,请按照以下步骤操作:
- 在 GitHub 上Fork仓库。
- 将项目克隆到您的机器上。
- 在您自己的分支上提交更改。
- 将您的工作推送到您的Fork。
- 提交Pull请求以便我们可以审查并合并您的更改。
许可证
本仓库采用MIT许可证。
致谢
更多关于Flutter Redis数据库交互插件upstash_redis的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter Redis数据库交互插件upstash_redis的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,下面是一个使用Flutter和upstash_redis
插件与Redis数据库进行交互的代码示例。upstash_redis
是一个Flutter插件,用于与Upstash托管的Redis数据库进行交互。
首先,确保你的Flutter项目已经添加了upstash_redis
依赖。你可以在pubspec.yaml
文件中添加以下依赖:
dependencies:
flutter:
sdk: flutter
upstash_redis: ^latest_version # 请替换为最新版本号
然后,运行flutter pub get
来安装依赖。
接下来,是一个简单的Flutter应用示例,展示如何使用upstash_redis
插件连接到Redis数据库并执行一些基本的操作,比如设置和获取键值对。
import 'package:flutter/material.dart';
import 'package:upstash_redis/upstash_redis.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Redis Example',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: RedisExampleScreen(),
);
}
}
class RedisExampleScreen extends StatefulWidget {
@override
_RedisExampleScreenState createState() => _RedisExampleScreenState();
}
class _RedisExampleScreenState extends State<RedisExampleScreen> {
final _formKey = GlobalKey<FormState>();
String? redisValue;
// Upstash Redis client configuration
final String redisUrl = 'redis://YOUR_REDIS_URL:YOUR_REDIS_PORT'; // 替换为你的Redis URL和端口
final String redisPassword = 'YOUR_REDIS_PASSWORD'; // 替换为你的Redis密码
late RedisClient redisClient;
@override
void initState() {
super.initState();
// 初始化Redis客户端
redisClient = RedisClient(url: redisUrl, password: redisPassword);
}
@override
void dispose() {
// 关闭Redis连接
redisClient.close();
super.dispose();
}
Future<void> _handleSubmit() async {
if (_formKey.currentState!.validate()) {
_formKey.currentState!.save();
// 从表单中获取用户输入
final String? key = 'example_key'; // 这里假设key是固定的,实际可以从表单获取
final String? value = 'example_value'; // 这里假设value是从表单获取的
try {
// 设置键值对
await redisClient.set(key!, value!);
// 获取键值对
final String? fetchedValue = await redisClient.get(key!);
// 更新UI
setState(() {
redisValue = fetchedValue;
});
} catch (e) {
print('Error interacting with Redis: $e');
}
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Flutter Redis Example'),
),
body: Padding(
padding: const EdgeInsets.all(16.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Form(
key: _formKey,
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
// 这里可以添加更多的表单字段,例如TextFormField用于输入key和value
// 这里为了简单起见,我们假设key和value是固定的
SizedBox(height: 20),
],
),
),
SizedBox(height: 20),
ElevatedButton(
onPressed: _handleSubmit,
child: Text('Set and Get from Redis'),
),
SizedBox(height: 20),
if (redisValue != null)
Text(
'Fetched Value from Redis: $redisValue',
style: TextStyle(fontSize: 18),
),
],
),
),
);
}
}
注意事项:
- Redis URL和密码:确保你替换了
redisUrl
和redisPassword
为你实际的Redis服务URL和密码。 - 表单处理:为了简单起见,示例中并没有真正的表单输入。在实际应用中,你可能需要添加
TextFormField
来让用户输入键值对。 - 错误处理:示例中的错误处理非常简单,仅打印错误信息。在生产环境中,你可能需要更详细的错误处理逻辑。
这段代码展示了如何使用upstash_redis
插件连接到Redis数据库,并执行基本的SET
和GET
操作。你可以根据需要扩展此示例,添加更多的Redis操作和功能。