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

网站开发主要内容重庆网站seo昔年优化

网站开发主要内容,重庆网站seo昔年优化,十大房产中介软件,crm管理系统都有哪些Redis对象 Redis客户端的所有操作都是基于Redis对象来操作的。下面通过一段代码来看看使用Redis客户端时需要哪些准备工作。通过这段代码可以知道客户端是否连接成功。 #includeiostream #includestring #include sw/redis/redis.husing namespace s…Redis对象 Redis客户端的所有操作都是基于Redis对象来操作的。下面通过一段代码来看看使用Redis客户端时需要哪些准备工作。通过这段代码可以知道客户端是否连接成功。 #includeiostream #includestring #include sw/redis/redis.husing namespace std;int main() {// 创建Redis对象的时候需要在构造函数中指定redis服务器端地址和端口sw::redis::Redis redis(tcp://127.0.0.1:6379);// 调用ping方法让客户端给服务器发了一个ping然后服务器就会返回一个pong。string result redis.ping();std::cout result endl;return 0; }需要使用Redis客户端时需要包含相应的头文件sw/redis/redis.h其中sw是作者的名称缩写。 在main函数当中需要先创建一个Redis对象它是在命名空间sw::redis::里面接着需要指定IP地址和端口号。其中6379是redis服务器的默认端口由于我的redis客户端和服务端是在同一台主机上所以指定的是127.0.0.1如果是不同主机则需要写对应主机的IP。 最后通过ping操作来检测连通性如果连通成功则会返回一个字符串PONG。运行这段代码时还需要3个库文件hiredis、redis、pthread。 g -o $ $^ -stdc17 /usr/local/lib/libredis.a /usr/lib/x86_64-linux-gnu/libhiredis.a -l pthread通用命令 重点讲解每个命令的用法和参数具体用法可以学习这篇文章Redis命令使用。所有的接口可以看redis-plus-plus的源码redis源码 get和set set函数原型如下 bool set(const sw::redis::StringView key, const sw::redis::StringView val, const std::chrono::milliseconds ttl std::chrono::milliseconds(0), sw::redis::UpdateType type sw::redis::UpdateType::ALWAYS)这里的参数和之前set命令的选项有很大的关联关系。key的类型是StringView表明这是只读 的不能修改。而对于std::string类型是可修改的既能写也能读。StringView的效率比string的效率高。除了key和value其余参数都是缺省值可以不填。 get函数原型如下OptionalString get(const StringView key); 返回值是Optional可以表示“非法值/无效值”如果查询到redis中为空则会返回nil但是如果使用std::string来表示不方便表现这个空值如果使用std::string*来表示是可以用nullptr表示无效但是返回指针又设计到内存归谁管。 还有Optional不支持运算符的重载需要通过.value()函数来获取string。 代码示例 void test1(sw::redis::Redis redis) {cout get和set的使用 endl;redis.flushall(); // 清空数据库避免残留的数据干扰结果// 使用set设置key-valueredis.set(key1, 111);redis.set(key2, 222);redis.set(key3, 333);redis.set(key4, 444);auto value1 redis.get(key1);if (value1)cout key1: value1.value() endl;auto value2 redis.get(key2);if (value2)cout key2: value2.value() endl;auto value3 redis.get(key1);if (value3)cout key3: value3.value() endl;auto value4 redis.get(key1);if (value4)cout key4: value4.value() endl; }exists 判断key是否存在。 函数原型 // 版本1 long long exists(const StringView key);// 版本2 template typename Tlong long exists(std::initializer_listT il) {return exists(il.begin(), il.end());}exists有两个版本都是以long long作为返回值的这是因为第二个版本可以接受一个初始化列表可以接收多个key有多少个key就返回多少。 返回值key 存在的个数。 代码示例 void test2(sw::redis::Redis redis) {cout existes的使用 endl;redis.flushall();redis.set(key1, 111);redis.set(key2, 222);redis.set(key3, 333);auto result1 redis.exists(key1);cout result1: result1 endl;auto result2 redis.exists(key2);cout result2: result1 endl;auto result3 redis.exists({key1, key2, key3, key4});std::cout result3: result3 std::endl; }del 用户删除key函数原型如下 // 版本1 long long del(const StringView key);// 版本2 template typename Tlong long del(std::initializer_listT il) {return del(il.begin(), il.end());}代码示例 void test3(sw::redis::Redis redis) {cout del的使用 endl;redis.flushall();redis.set(key1, 111);redis.set(key2, 222);redis.set(key3, 333);auto ret1 redis.del(key1);cout ret1 endl;auto ret2 redis.del({key1, key2, key3});cout ret2 endl; }flushall 清空整个redis。 函数原型void flushall(bool async false); 直接用默认的false即可。 keys 用于搜索符合条件的key。 函数原型 template typename Output void keys(const StringView pattern, Output output);第一个参数pattern是匹配参数也就是根据某个“特征”寻找匹配的key第二个参数output是一个插入迭代器用于获取符合条件的key。 插入迭代器主要有三种 font_insert_iterator用于区间的开头往前面插入。back_insert_iterator区间的末尾往后面插入。insert_inerator区间的任意位置往该位置之前插入。 对于插入迭代器来说*、、--是啥都不干主要的核心操作就是就是把另一个迭代器赋值给这个插入迭代器。例如it是插入迭代器it2是普通的迭代器当itit2相当于是获取到it2指向的元素然后把元素按照it当前插入迭代器的位置和动作来进行执行插入操作。比如it是一个back_insert_inerator就是把it2指向的元素插入到it指向的容器末尾相当于调用一次push_back 在operator内部调用vector.insert()接口就能完成插入容器的操作此时pos也会自动指向新的位置。 代码示例 void test4(sw::redis::Redis redis) {cout keys的使用 endl;redis.flushall();redis.set(key1, 111);redis.set(key2, 222);redis.set(key3, 333);redis.set(key4, 444);vectorstring ret;auto it std::back_inserter(ret);redis.keys(*, it);for (auto r : ret)std::cout r std::endl; }expire 用于设置超时时间。 函数原型 bool expire(const StringView key, long long timeout); bool expire(const StringView key, const std::chrono::seconds timeout);第一个版本的是long long类型以秒为单位但也可以使用std::chrono::seconds来控制时间单位。 如果key不存在返回-2如果key存在但是没有超时时间返回-1。 ttl 获取key剩下的超时时间。 函数原型long long ttl(const StringView key); 代码示例 void test5(sw::redis::Redis redis) {cout expire和ttl的使用 endl;redis.flushall();redis.set(key1, 111);redis.set(key2, 222);redis.set(key3, 333);redis.set(key4, 444);redis.expire(key1, 10);redis.expire(key2, std::chrono::seconds(5)); // 设置5秒后过期std::this_thread::sleep_for(5s);cout redis.ttl(key1) endl;cout redis.ttl(key2) endl;cout redis.ttl(key3) endl;cout redis.ttl(key4) endl; }type 获取key所对应value的数据类型。 函数原型std::string type(const StringView key); 代码示例 void test6(sw::redis::Redis redis) {cout type的使用 endl;redis.flushall();redis.set(key1, 111);string ret redis.type(key1);cout key1: ret endl;redis.lpush(key2, 222);ret redis.type(key2);cout key2: ret endl;redis.hset(key3, aaa, 333);ret redis.type(key3);cout key3: ret endl;redis.sadd(key4, aaa);ret redis.type(key4);cout key4: ret endl;redis.zadd(key5, 张三, 19);ret redis.type(key5);cout key5: ret endl; }
http://www.hkea.cn/news/14438199/

相关文章:

  • 做网站支付系统wordpress 主题移植emlog
  • 寻找做网站的三亚做网站服务
  • 石家庄定制网站建设中国最好室内设计公司排名榜
  • 建设银行河北分行官网招聘网站自己学建网站
  • 新图闻提供的产品和服务优化搜索曝光次数的方法
  • 网站诊断示例百度seo推广
  • 证书兼职网个人网站建设优化
  • 信誉好的龙岗网站制作网站源码怎么上传
  • 重庆网站供奉定制软件开发公司有哪些
  • 做游戏的网站的公司wordpress文字类主题
  • 青海旅游的网站建设湖南盈达电力建设有限公网站
  • 腾达建设网站网站建设拍金手指排名贰贰
  • 磁业 东莞网站建设东莞网站seo推广
  • 网站定位与功能分析wordpress固定连接404错误
  • 临沂手机建站模板大气网站背景图
  • 运城市做网站公司做网站一般用什么配置的电脑
  • wordpress的开发框架济南优化网站关键词
  • 建站一条龙北京国互网网站建设价格
  • 单页网站建站足球比赛直播回放
  • 上海营销网站建站公司汽修厂做网站有什么好处
  • 梁山专业网站建设长沙 外贸网站建设公司
  • 网站建设和seo是什么关系php源码怎么搭建网站
  • 网站建设 2015年11月wordpress后台登陆logo
  • 可免费投放广告的平台百度搜索关键词排名优化技术
  • 网站设计中的div是什么做金属的网站
  • 长沙住房建设部网站求做外宣图网站
  • wordpress防止盗链百度seo关键词优化电话
  • 邢台建设局网站上中标公示查询wordpress备案号修改
  • 仙居网站制作做网站在线支付系统多少钱?
  • 建设企业品牌网站免费建站系统开源