当前位置: 首页 > news >正文

flash素材网站手机端企业网站模板

flash素材网站,手机端企业网站模板,php电影播放网站开发,网站建设板块如何分类文章目录 前言一、首先引入依赖二、创建redis客户端三、相关操作设置值mset设置多个key值设置含有过期时间的值如果key不存在才设置获取基本类型值删除一个键删除多个键判断键是否存在 如何使用json序列化导入相关依赖代码相关实例 总结 前言 使用rust写web#xff0c;自然是… 文章目录 前言一、首先引入依赖二、创建redis客户端三、相关操作设置值mset设置多个key值设置含有过期时间的值如果key不存在才设置获取基本类型值删除一个键删除多个键判断键是否存在 如何使用json序列化导入相关依赖代码相关实例 总结 前言 使用rust写web自然是离不开redis缓存的。rust也有现成redis连接库并且支持阻塞和异步两种模式。下面教程我我以tokio异步操作redis方式为主同步的操作可以参考异步区别不大 一、首先引入依赖 redis { version 0.24.0,features [ r2d2 , tokio-comp ] }我这里feature开启了r2d2连接池以及开启了tokio异步支持特性。 全部特性列表如下 可选功能 定义了一些可以启用其他功能的功能 如果需要的话。其中一些是默认打开的。 acl启用 ACL 支持默认启用aio启用异步 IO 支持默认启用geospatial启用地理空间支持默认启用script启用脚本支持默认启用r2d2启用 R2D2 连接池支持可选ahash启用AHASH地图/设置支持并在内部使用AHASH7-10%性能- 可选cluster启用 Redis集群支持可选cluster-async启用异步 Redis 集群支持可选tokio-comp启用对 Tokio的支持可选connection-manager启用对自动重新连接的支持可选keep-alive通过板启用保持活动选项可选socket2 二、创建redis客户端 let client redis::Client::open(redis://127.0.0.1:6379/).unwrap();//获取连接let con client.get_async_connection().await.expect(连接redis失败);此处url的格式为redis://[][:][:port][/] db是redis数据库索引。可根据业务自行修改 三、相关操作 设置值 #[tokio::main] async fn main() {let client redis::Client::open(redis://127.0.0.1:6379/10).unwrap();let mut con client.get_async_connection().await.expect(连接redis失败);con.set::str,u32,()(my_key, 12).await.expect(操作失败); }此处str,u32,()前两个泛型指定keyvalue。第三个泛型是实现了FromRedisValue Trait的返回set方法可以不指定 mset设置多个key值 #[tokio::main] async fn main() {let client redis::Client::open(redis://127.0.0.1:6379/10).unwrap();let mut con client.get_async_connection().await.expect(连接redis失败);con.mset::str,u32,()([(my_key1, 100), (my_key2, 200)]).await.expect(操作失败); }设置含有过期时间的值 #[tokio::main] async fn main() {let client redis::Client::open(redis://127.0.0.1:6379/10).unwrap();let mut con client.get_async_connection().await.expect(连接redis失败);//设置60秒过期第三个参数是过期时间con.pset_ex::str,u32,()(my_key, 12,60*1000).await.expect(操作失败); }pset_ex是毫秒单位set_ex是秒 如果key不存在才设置 #[tokio::main] async fn main() {let client redis::Client::open(redis://127.0.0.1:6379/10).unwrap();let mut con client.get_async_connection().await.expect(连接redis失败);con.set_nx::str,u32,()(key3,30).await.expect(操作失败); }获取基本类型值 #[tokio::main] async fn main() {let client redis::Client::open(redis://127.0.0.1:6379/10).unwrap();let mut con client.get_async_connection().await.expect(连接redis失败);let value : u32 con.get(my_key).await.expect(获取值失败);println!(my_key {}, value); }删除一个键 #[tokio::main] async fn main() {let client redis::Client::open(redis://127.0.0.1:6379/10).unwrap();let mut con client.get_async_connection().await.expect(连接redis失败);con.del::str, ()(key3) .await.expect(删除redis key失败); }删除多个键 #[tokio::main] async fn main() {let client redis::Client::open(redis://127.0.0.1:6379/10).unwrap();let mut con client.get_async_connection().await.expect(连接redis失败);// 多个键删除let keys_to_delete vec![my_key1, my_key2];let result con.del::Vecstr, i32(keys_to_delete).await;match result {Ok(count) println!(Deleted {} keys, count),Err(e) println!(Error: {}, e),} }判断键是否存在 #[tokio::main] async fn main() {let client redis::Client::open(redis://127.0.0.1:6379/10).unwrap();let mut con client.get_async_connection().await.expect(连接redis失败);// 判断键是否存在let exists : bool con.exists(my_key).await.expect(执行redis命令失败);println!(exists: {}, exists); }更多详细的接口文档可以看官网AsyncCommands接口https://docs.rs/redis/0.24.0/redis/trait.AsyncCommands.html 如何使用json序列化 可以通过自定义方法添加泛型约束实现功能。使用serde_json库来进行序列化导入相关依赖 [dependencies] tokio { version 1.35.1, features [full] } redis { version 0.24.0,features [ r2d2 , tokio-comp,json ] } serde_json 1.0.111 serde { version 1.0.195, features [derive] }代码相关实例 use redis::{aio, AsyncCommands, RedisError, RedisResult, ToRedisArgs}; use serde::{Deserialize, Serialize}; use serde::de::DeserializeOwned;#[derive(Debug, Clone,Deserialize, Serialize)] struct User{name: String,age: u8,email: String, }#[tokio::main] async fn main() {let client redis::Client::open(redis://127.0.0.1:6379/10).unwrap();let mut con client.get_async_connection().await.expect(连接redis失败);// 判断键是否存在let user User{name: zhangsan.to_string(),age: 18,email: 11111111.to_string(),};set_json(mut con,user1,user).await.expect(设置失败);let user :User get_json(mut con, user2).await.expect(获取失败,没有找到User);println!(user:{:?},user); }//设置json格式对象 pub async fn set_jsonK,T(con: mut aio::Connection, key: K, obj : T) - RedisResultStringwhere K: ToRedisArgs Send Sync, T: Serialize{let json serde_json::to_string(obj);match json {Ok(obj) {con.set::K,String, String(key,obj).await},Err(e) {return Err(RedisError::from(e));}} }//获得json格式对象 pub async fn get_jsonK, T(con: mut aio::Connection, key: K) - RedisResultTwhere K: ToRedisArgs Send Sync, T: DeserializeOwned{let json : String con.get(key).await?;let result serde_json::from_str(json);return match result {Ok(obj) { Ok(obj) },Err(e) { Err(RedisError::from(e)) }} }通过这两个方法泛型约束据即可实现相关功能 总结 以上就是今天要讲的内容本文介绍了rust语言tokio异步使用redis教程后续会出一个扩展使用教程
http://www.hkea.cn/news/14536051/

相关文章:

  • 免费行情软件app网站直播网站地图 设计
  • 网站后台管理界面模板搜索推广平台有哪些
  • 网站建设策略营销平面广告设计趋势
  • 顺德网站制作案例价位郑州网站建设到诺然
  • 免费图片编辑网站vs做asp网站流程
  • 厦门微网站建设17zwd一起做网站官网
  • 东莞哪里有网站建设厂家网站推广工作内容
  • 宠物网站页面设计简笔软件开发工程师岗位职责及要求
  • 自己电脑做网站必须装jdk发稿类别
  • 安徽省住房建设厅网站企业应该如何建设自己的网站
  • 外贸 网站建设淘宝新店怎么快速做起来
  • 如何设置网站根目录淘宝网站建设好评
  • 怎样做网站表白手机免费制图软件
  • 建筑论坛网站2345浏览器官方网站
  • 海西电子商务网站建设怎么弄免费的空间做网站
  • 网站怎么被搜到首页劳务外包和劳务派遣
  • 网站建设的困难做商城网站怎么做
  • 南平企业网站建设建网站做外贸
  • 做pc端网站怎么样做美容一般在哪个网站团购比较好
  • 建设银行纪念币网站中国最近战争新闻
  • 做自媒体有哪些网站wordpress好卡
  • 重庆网站平台中国新闻社在哪里
  • 网站配色案例分析国际电商平台有哪些
  • go 语言 做网站wordpress提示不安全
  • 微信公众号商城网站开发wordpress主机
  • 科学家做实验的网站php wordpress教程
  • 如何撰写网站建设方案郑州网站顾问热狗网
  • 网站络济南建网站公司
  • 免费企业网站建设条件seo顾问阿亮
  • 网站前端建设需要学会什么洛阳网站建设哪家权威