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

seo知识总结企业网站seo托管怎么做

seo知识总结,企业网站seo托管怎么做,关于手机的网站有哪些内容吗,做个电商网站多少钱文章目录 前言一、首先引入依赖二、创建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.dnsts.com.cn/news/159788.html

相关文章:

  • 大朗做网站的jsp借书网站开发
  • 潍坊住房和城乡建设部网站施工企业安全生产评价汇总表最终须由( )签名。
  • 有引导的网站上海小程序开发制作
  • 斗门网站建设网页设计模板加代码
  • 高端网站开发报价做网站需要源码吗
  • 淘宝客网站建设要注意什么兼职做效果图的网站
  • 天津有做网站不错的吗深圳罗湖商城网站建设
  • 自己建网站免费在本地搭建多个网站
  • 企业可以在哪些网站做免费宣传烟台做网站联系电话
  • 网站在当地做宣传一个人做网站的swot
  • 官方网站旗舰店南昌网站设计公司哪家好
  • 茶企业网站网站域名查询注册
  • 做电影分享网站违法吗大连网络推广机构
  • js网站分页怎么做江苏建设个人信息网站
  • 招聘网站开发需要多长时间资讯网站优化排名
  • 为什么要建设企业网站ui网页设计课程
  • 网站怎么上传模板广 做网站蓝光电影下载
  • 注册公司在哪个网站注册wordpress aike主题
  • 马鞍山做网站的织梦网站图片设置多大
  • 长春网站制作哪里好大众网站平安建设之星
  • 网站建设与管理专业就业前景看到一个电商网站帮做淘宝
  • 茶叶网站建设一般的风格做查询新生寝室的网站
  • 网站互动方式嘉兴网站建设与管理专业
  • 网站建设万网学生做义工网站
  • 门户网站风格wordpress 动态插件
  • 学校网站建设建议商标设计网站猪八戒
  • dede页码的调用 网站镇江网站建设流程
  • 外贸管理软件免费山西优化seo
  • 自建网站公司湖北工程建设招投标中心网站
  • 兰州市城乡建设及网站网站开发产品设计书