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

网站服务器的选择村网站开设两学一做栏目

网站服务器的选择,村网站开设两学一做栏目,万网安装wordpress,新手怎么做销售文章目录 前言一、首先引入依赖二、创建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/14345242/

相关文章:

  • 上海网络公司网站注册公司怎么注册
  • 做电商要注册网站吗个人做外贸的网站那个好做
  • 网站设计与开发wordpress分类目录优化
  • 不需要备案的域名wordpress 优化seo
  • 做招聘网站wordpress原生app
  • 摄影网站难做吗兼职网网站建设方案建议书
  • asp做购物网站培训
  • 针织衫技术支持东莞网站建设代理服务器ip免费
  • 个人网站模板 免费做宣传图册在什么网站
  • 360网站怎么做ppt软件开发工程师招聘简章
  • 高端定制网站开发建站教程详解小程序开发模板源码
  • 哪个网站可以做兼职ppt模板邯郸最近发生的重大新闻
  • 这么做钓鱼网站wordpress和shopex
  • 做国内打不开的网站长沙网站搭建关键词排名
  • 唐山网站公司建站阿里巴巴网站做推广效果怎么样
  • 有关做粪污处理设备的企业网站腊肉网站的建设前景
  • 网站白名单查询网站怎么获得流量
  • 商丘高端网站建设怎样进行seo
  • 开通网站主机网站设计说明范文
  • 局域网wordpress建站网络推广项目代理
  • 电商公司建设网站网站广告网络推广价格低
  • 南昌做网站建设哪家好欧美风格网站模版
  • 一站式做网站企业网页版qq登录入口官网手机
  • 厦门网站建设制作北京建筑设计院排名推荐
  • 中山企业门户网站建设让别人做网站注意事项
  • 企业网站虚假宣称iso9001的处罚案例相城高端网站建设
  • 网站域名免费挪威网站后缀
  • 带状疱疹的预防措施短视频seo公司
  • 简述一个商务网站建设的步骤wordpress不能上传
  • 装修公司做网站推广能接到活吗500个免费视频素材