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

世界上前端做的最好的网站2345浏览器官网网址

世界上前端做的最好的网站,2345浏览器官网网址,专业网站建设微信商城开发,中国最好的猎头公司排行榜文章目录 前言一、首先引入依赖二、创建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.pierceye.com/news/598974/

相关文章:

  • 做模板网站赚钱吗网站建设需要多少内存
  • C语言网站开发pdf专科网站开发简历
  • 静态网站怎么做优化网站建设用什么软件
  • 如何建设移动端网站物联网设计
  • 赣州网站设计哪里好天河网站建设多少钱
  • 做lol直播网站设计一个公司网站多少钱
  • 电商网站 投诉百度录入网站
  • 如何做产品网站网页论坛的网站开发项目
  • 如何在记事本中做网站链接冰雪蜜城店加盟费多少
  • 中山网站建设公司专业建站公司设计
  • 汽车手机网站制作一个具体网站的seo优化
  • 手机网站的页面大小wordpress下载主题博客
  • 创客贴设计网站官网高端网站制作网址
  • 衡水网站建设选哪家信用网站系统建设方案
  • 网站全屏代码如何做网站外链
  • 中国人自己的空间站哪里有免费的网站模板下载 迅雷下载 迅雷下载软件
  • 网站建设預算网站的新闻模块怎么做
  • 浙江省建设厅查询官方网站外贸业务员
  • 乐清公司网站建设高端网站有哪些
  • 网站备案状态查询漳州北京网站建设
  • wordpress oss ftp湖北百度seo排名
  • 深圳福田站弹簧机东莞网站建设
  • 网站美工要求企业建设网站风险
  • 网站建设项目资金申请报告semen
  • 阿里巴巴上做网站要多少钱信息网络工程师
  • 网站建设与网页设计心得体会淘宝网页制作素材
  • 男女做床网站装酷网装修平台
  • 网站引导页动画华为网站哪个公司做的
  • 网站开发用了哪些技术上海建设网站制作
  • 惠州微网站建设胶州家园网站建设