范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

php操作redis大全

  php连接redis测试<?php $redis = new Redis();   $redis->connect("127.0.0.1", 6379);//serverip port $redis->auth("mypassword");//my redis password  $redis ->set( "test" , "Hello World");   echo $redis ->get( "test");php操作redis函数封装/**  * 如果不传入$host和$port默认读取Laravel环境变量的参数  * redis Set/setex封装,可直接传入数组,可设置过期时间 written:yangxingyi  */ function RedisSet($key,$value,$expire=0,$host="",$port=""){     if(!$key||!$value) return false;     $host = $host?$host:getenv("REDIS_HOST");     $port = $port?$port:getenv("REDIS_PORT");     $redis = new Redis();     $redis->connect($host, $port);     $value = is_array($value)?json_encode($value):$value;     return $expire>0?$redis->setex(getenv("REDIS_PREFIX").$key, $expire,$value):$redis->set(getenv("REDIS_PREFIX").$key,$value); } /**  * redis get封装,如果传入的是数组,返回的也是数组,同理字符串 written:yangxingyi  */ function RedisGet($key,$host="",$port=""){     $redis = new Redis();     $host = $host?$host:getenv("REDIS_HOST");     $port = $port?$port:getenv("REDIS_PORT");     $redis->connect($host, $port);     $result = $redis->get(getenv("REDIS_PREFIX").$key);     return is_null(json_decode($result))?$result:json_decode($result,true); }php操作redis大全,基本上php操作redis常用的函数都在下面了setex 带生存时间的写入值 $redis->setex("key", 3600, "value");  setnx 判断是否重复的,写入值,如存在了不修改返回0,不存在就添加返回1 $redis->setnx("key", "value"); 返回已经删除key $redis->delete("key1"); 成功返回1失败返回0 $redis->delete("key1","key2"); 删除两个键成功返回1失败返回0 查询生存时间 $redis->ttl("key1"); 持久化的返回-1,有生存时间的返回时间(单位秒) 同时给多个key赋值,同时设置key0和key1 $redis->mset(array("key0" => "value0", "key1" => "value1")); key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值 $redis->incr("key1"); $redis->incrBy("key1", 10); 减法跟加法一样 $redis->decr("key1"); 减少1 $redis->decrBy("key1",5) 减少5  list相关操作,连表操作 lPush $redis->lPush("list", "888"); $id = $redis->lpush("list","HHHHHHH");echo $id;返回链表的元素个数 $redi->lrange("list",0,-1); 返回全部数据,数组形式 $redis->lrange("list",0,2); 返回连表0-2坐标的三个元素 lPushx/rPushx $redis->lPushx(key, value); 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加  $redis->lpop("list");输出链表最左边的ksy的值,输出后删除掉这个key $redis->rpop("list");输出链表最右边的ksy的值,输出后删除掉这个key $redis->lset("list",7,"update"); 修改坐标为7的值,成功返回1 集合:sadd,sadd是无序的集合,每次插入集合的时候都可能会弄乱里面集合的排序 sadd s1 zhangsan sadd s1 lisi sadd s1 wangwu sadd t1 yangxingyi sadd t1 lilei sadd t1 zhangsan smembers s1 s1的所有集合内容 sdiff s1 t1 s1有的,t1没有的,差集 $redis->sinter("s1","t1");返回s1和t1两个集合都有的,数组形式 scard s1 返回s1集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的 spop抽奖场景,返回集合里面随机的数 spop s1  默认返回1个,返回后就删除这个数,中奖了就不能再中了 $i = $redis->spop("s1");var_dump($i); 返回一个数,返回后删除这个数 $i = $redis->spop("s1",2);var_dump($i);不能返回两个的,提示错误的 随机返回集合里面的一个元素,但不删除,重复中奖 $i = $redis->srandmember("s1");echo $i; sismember s1 zhangsan 查询张三在不在集合里面,在1,不在false $i = $redis->sismember("s1","zhangsan2");echo $i;在1,不在false  zadd key 2 value 有序集合 zadd y1 1 zhangsan; zadd y1 3 lisi; zadd y1 2 wangwu; zrange y1 0 -1; 排序就是,根据插入的时候的排序从小到达zhangsan,wangwu,lisi $i = $redis->zrange("y1",0,-1);var_dump($i); 返回数组,键值不是插入时候给的键,是从0开始的新键 zrevrange y1 0 -1; 反转排序,插入的时候键值越高,排序越优先 zcard y1 ;获取有序集合里面的个数,有多少个就返回多少个,没有从0开始的,坐标才从0开始的 无序就scard,有序就zcard,有z没有s sInterStore 求交集并将交集保存到output的集合 $redis->sInterStore("output", "key1", "key2", "key3")    Hash操作 hSet $redis->hSet("h", "key1", "hello"); 向名称为h的hash中添加元素key1—>hello  hGet $redis->hGet("h", "key1"); 返回名称为h的hash中key1对应的value(hello)  hLen $redis->hLen("h"); 返回名称为h的hash中元素个数  hDel $redis->hDel("h", "key1"); 删除名称为h的hash中键为key1的域  hKeys $redis->hKeys("h"); 返回名称为key的hash中所有键  hVals $redis->hVals("h") 返回名称为h的hash中所有键对应的value  hGetAll $redis->hGetAll("h"); 返回名称为h的hash中所有的键(field)及其对应的value  hExists $redis->hExists("h", "a"); 名称为h的hash中是否存在键名字为a的域  hIncrBy $redis->hIncrBy("h", "x", 2); 将名称为h的hash中x的value增加2  hMset $redis->hMset("user:1", array("name" => "Joe", "salary" => 2000)); 向名称为key的hash中批量添加元素  hMGet $redis->hmGet("h", array("field1", "field2")); 返回名称为h的hash中field1,field2对应的value  redis 操作相关 flushDB 清空当前数据库  flushAll 清空所有数据库  randomKey 随机返回key空间的一个key $key = $redis->randomKey();  select 选择一个数据库 move 转移一个key到另外一个数据库 $redis->select(0); // switch to DB 0 $redis->set("x", "42"); // write 42 to x $redis->move("x", 1); // move to DB 1 $redis->select(1); // switch to DB 1 $redis->get("x"); // will return 42  rename, renameKey 给key重命名 $redis->set("x", "42"); $redis->rename("x", "y"); $redis->get("y"); //   42 $redis->get("x"); //   `FALSE`  renameNx 与remane类似,但是,如果重新命名的名字已经存在,不会替换成功  setTimeout, expire 设定一个key的活动时间(s) $redis->setTimeout("x", 3);  expireAt key存活到一个unix时间戳时间 $redis->expireAt("x", time() + 3);  keys, getKeys 返回满足给定pattern的所有key $keyWithUserPrefix = $redis->keys("user*");  dbSize 查看现在数据库有多少key $count = $redis->dbSize();  auth 密码认证 $redis->auth("foobared");  bgrewriteaof 使用aof来进行数据库持久化 $redis->bgrewriteaof();  slaveof 选择从服务器 $redis->slaveof("10.0.1.7", 6379);  save 将数据同步保存到磁盘  bgsave 将数据异步保存到磁盘  lastSave 返回上次成功将数据保存到磁盘的Unix时戳  info 返回redis的版本信息等详情   Redis::__construct构造函数 $redis = new Redis();  connect, open 链接redis服务 参数 host: string,服务地址 port: int,端口号 timeout: float,链接时长 (可选, 默认为 0 ,不限链接时间) 注: 在redis.conf中也有时间,默认为300  pconnect, popen 不会主动关闭的链接 参考上面  setOption 设置redis模式  getOption 查看redis设置的模式  ping 查看连接状态  get 得到某个key的值(string值) 如果该key不存在,return false  set 写入key 和 value(string值) 如果写入成功,return ture  setex 带生存时间的写入值 $redis->setex("key", 3600, "value"); // sets key   value, with 1h TTL.  setnx 判断是否重复的,写入值 $redis->setnx("key", "value"); $redis->setnx("key", "value");  delete  删除指定key的值 返回已经删除key的个数(长整数) $redis->delete("key1", "key2"); $redis->delete(array("key3", "key4", "key5"));  ttl 得到一个key的生存时间  persist 移除生存时间到期的key 如果key到期 true 如果不到期 false  mset (redis版本1.1以上才可以用) 同时给多个key赋值 $redis->mset(array("key0" => "value0", "key1" => "value1"));    multi, exec, discard 进入或者退出事务模式 参数可选Redis::MULTI或Redis::PIPELINE. 默认是 Redis::MULTI Redis::MULTI:将多个操作当成一个事务执行 Redis::PIPELINE:让(多条)执行命令简单的,更加快速的发送给服务器,但是没有任何原子性的保证 discard:删除一个事务 返回值 multi(),返回一个redis对象,并进入multi-mode模式,一旦进入multi-mode模式,以后调用的所有方法都会返回相同的对象,只到exec()方法被调用。  watch, unwatch (代码测试后,不能达到所说的效果) 监测一个key的值是否被其它的程序更改。如果这个key在watch 和 exec (方法)间被修改,这个 MULTI/EXEC 事务的执行将失败(return false) unwatch  取消被这个程序监测的所有key 参数,一对key的列表 $redis->watch("x");  $ret = $redis->multi() ->incr("x") ->exec();   subscribe * 方法回调。注意,该方法可能在未来里发生改变  publish * 发表内容到某一个通道。注意,该方法可能在未来里发生改变  exists 判断key是否存在。存在 true 不在 false  incr, incrBy key中的值进行自增1,如果填写了第二个参数,者自增第二个参数所填的值 $redis->incr("key1"); $redis->incrBy("key1", 10);  decr, decrBy 做减法,使用方法同incr  getMultiple 传参 由key组成的数组 返回参数 如果key存在返回value,不存在返回false $redis->set("key1", "value1"); $redis->set("key2", "value2"); $redis->set("key3", "value3"); $redis->getMultiple(array("key1", "key2", "key3")); $redis->lRem("key1", "A", 2); $redis->lRange("key1", 0, -1);  list相关操作 lPush $redis->lPush(key, value); 在名称为key的list左边(头)添加一个值为value的 元素  rPush $redis->rPush(key, value); 在名称为key的list右边(尾)添加一个值为value的 元素  lPushx/rPushx $redis->lPushx(key, value); 在名称为key的list左边(头)/右边(尾)添加一个值为value的元素,如果value已经存在,则不添加  lPop/rPop $redis->lPop("key"); 输出名称为key的list左(头)起/右(尾)起的第一个元素,删除该元素  blPop/brPop $redis->blPop("key1", "key2", 10); lpop命令的block版本。即当timeout为0时,若遇到名称为key i的list不存在或该list为空,则命令结束。如果timeout>0,则遇到上述情况时,等待timeout秒,如果问题没有解决,则对keyi+1开始的list执行pop操作  lSize $redis->lSize("key"); 返回名称为key的list有多少个元素  lIndex, lGet $redis->lGet("key", 0); 返回名称为key的list中index位置的元素  lSet $redis->lSet("key", 0, "X"); 给名称为key的list中index位置的元素赋值为value  lRange, lGetRange $redis->lRange("key1", 0, -1); 返回名称为key的list中start至end之间的元素(end为 -1 ,返回所有)  lTrim, listTrim $redis->lTrim("key", start, end); 截取名称为key的list,保留start至end之间的元素  lRem, lRemove $redis->lRem("key", "A", 2); 删除count个名称为key的list中值为value的元素。count为0,删除所有值为value的元素,count>0从头至尾删除count个值为value的元素,count<0从尾到头删除|count|个值为value的元素  lInsert 在名称为为key的list中,找到值为pivot 的value,并根据参数Redis::BEFORE | Redis::AFTER,来确定,newvalue 是放在 pivot 的前面,或者后面。如果key不存在,不会插入,如果 pivot不存在,return -1 $redis->delete("key1"); $redis->lInsert("key1", Redis::AFTER, "A", "X"); $redis->lPush("key1", "A"); $redis->lPush("key1", "B"); $redis->lPush("key1", "C"); $redis->lInsert("key1", Redis::BEFORE, "C", "X"); $redis->lRange("key1", 0, -1); $redis->lInsert("key1", Redis::AFTER, "C", "Y"); $redis->lRange("key1", 0, -1); $redis->lInsert("key1", Redis::AFTER, "W", "value");  rpoplpush 返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部 $redis->delete("x", "y"); $redis->lPush("x", "abc"); $redis->lPush("x", "def"); $redis->lPush("y", "123"); $redis->lPush("y", "456"); // move the last of x to the front of y. var_dump($redis->rpoplpush("x", "y")); var_dump($redis->lRange("x", 0, -1)); var_dump($redis->lRange("y", 0, -1));   string(3) "abc"  array(1) { [0]=> string(3) "def" }  array(3) { [0]=> string(3) "abc" [1]=> string(3) "456" [2]=> string(3) "123" }  SET操作相关 sAdd 向名称为key的set中添加元素value,如果value存在,不写入,return false $redis->sAdd(key , value);  sRem, sRemove 删除名称为key的set中的元素value $redis->sAdd("key1" , "set1"); $redis->sAdd("key1" , "set2"); $redis->sAdd("key1" , "set3"); $redis->sRem("key1", "set2");  sMove 将value元素从名称为srckey的集合移到名称为dstkey的集合 $redis->sMove(seckey, dstkey, value);  sIsMember, sContains 名称为key的集合中查找是否有value元素,有ture 没有 false $redis->sIsMember(key, value);  sCard, sSize 返回名称为key的set的元素个数  sPop 随机返回并删除名称为key的set中一个元素  sRandMember 随机返回名称为key的set中一个元素,不删除  sInter 求交集  sInterStore 求交集并将交集保存到output的集合 $redis->sInterStore("output", "key1", "key2", "key3")  sUnion 求并集 $redis->sUnion("s0", "s1", "s2"); s0,s1,s2 同时求并集  sUnionStore 求并集并将并集保存到output的集合 $redis->sUnionStore("output", "key1", "key2", "key3");  sDiff 求差集  sDiffStore 求差集并将差集保存到output的集合  sMembers, sGetMembers 返回名称为key的set的所有元素  sort 排序,分页等 参数 "by" => "some_pattern_*", "limit" => array(0, 1), "get" => "some_other_pattern_*" or an array of patterns, "sort" => "asc" or "desc", "alpha" => TRUE, "store" => "external-key" 例子 $redis->delete("s"); $redis->sadd("s", 5); $redis->sadd("s", 4); $redis->sadd("s", 2); $redis->sadd("s", 1); $redis->sadd("s", 3); var_dump($redis->sort("s")); // 1,2,3,4,5 var_dump($redis->sort("s", array("sort" => "desc"))); // 5,4,3,2,1 var_dump($redis->sort("s", array("sort" => "desc", "store" => "out"))); // (int)5   string命令 getSet 返回原来key中的值,并将value写入key $redis->set("x", "42"); $exValue = $redis->getSet("x", "lol"); // return "42", replaces x by "lol" $newValue = $redis->get("x")" // return "lol"  append string,名称为key的string的值在后面加上value $redis->set("key", "value1"); $redis->append("key", "value2"); $redis->get("key");  getRange (方法不存在) 返回名称为key的string中start至end之间的字符 $redis->set("key", "string value"); $redis->getRange("key", 0, 5); $redis->getRange("key", -5, -1);  setRange (方法不存在) 改变key的string中start至end之间的字符为value $redis->set("key", "Hello world"); $redis->setRange("key", 6, "redis"); $redis->get("key");  strlen 得到key的string的长度 $redis->strlen("key");  getBit/setBit 返回2进制信息  zset(sorted set)操作相关 zAdd(key, score, member):向名称为key的zset中添加元素member,score用于排序。如果该元素已经存在,则根据score更新该元素的顺序。 $redis->zAdd("key", 1, "val1"); $redis->zAdd("key", 0, "val0"); $redis->zAdd("key", 5, "val5"); $redis->zRange("key", 0, -1); // array(val0, val1, val5)  zRange(key, start, end,withscores):返回名称为key的zset(元素已按score从小到大排序)中的index从start到end的所有元素 $redis->zAdd("key1", 0, "val0"); $redis->zAdd("key1", 2, "val2"); $redis->zAdd("key1", 10, "val10"); $redis->zRange("key1", 0, -1); // with scores $redis->zRange("key1", 0, -1, true);  zDelete, zRem zRem(key, member) :删除名称为key的zset中的元素member $redis->zAdd("key", 0, "val0"); $redis->zAdd("key", 2, "val2"); $redis->zAdd("key", 10, "val10"); $redis->zDelete("key", "val2"); $redis->zRange("key", 0, -1);   zRevRange(key, start, end,withscores):返回名称为key的zset(元素已按score从大到小排序)中的index从start到end的所有元素.withscores: 是否输出socre的值,默认false,不输出 $redis->zAdd("key", 0, "val0"); $redis->zAdd("key", 2, "val2"); $redis->zAdd("key", 10, "val10"); $redis->zRevRange("key", 0, -1); // with scores $redis->zRevRange("key", 0, -1, true);  zRangeByScore, zRevRangeByScore $redis->zRangeByScore(key, star, end, array(withscores, limit )); 返回名称为key的zset中score >= star且score <= end的所有元素  zCount $redis->zCount(key, star, end); 返回名称为key的zset中score >= star且score <= end的所有元素的个数  zRemRangeByScore, zDeleteRangeByScore $redis->zRemRangeByScore("key", star, end); 删除名称为key的zset中score >= star且score <= end的所有元素,返回删除个数  zSize, zCard 返回名称为key的zset的所有元素的个数  zScore $redis->zScore(key, val2); 返回名称为key的zset中元素val2的score  zRank, zRevRank $redis->zRevRank(key, val); 返回名称为key的zset(元素已按score从小到大排序)中val元素的rank(即index,从0开始),若没有val元素,返回"null"。zRevRank 是从大到小排序  zIncrBy $redis->zIncrBy("key", increment, "member"); 如果在名称为key的zset中已经存在元素member,则该元素的score增加increment;否则向集合中添加该元素,其score的值为increment  zUnion/zInter 参数 keyOutput arrayZSetKeys arrayWeights aggregateFunction Either "SUM", "MIN", or "MAX": defines the behaviour to use on duplicate entries during the zUnion. 对N个zset求并集和交集,并将最后的集合保存在dstkeyN中。对于集合中每一个元素的score,在进行AGGREGATE运算前,都要乘以对于的WEIGHT参数。如果没有提供WEIGHT,默认为1。默认的AGGREGATE是SUM,即结果集合中元素的score是所有集合对应元素进行SUM运算的值,而MIN和MAX是指,结果集合中元素的score是所有集合对应元素中最小值和最大值。

都说骁龙870手机性价比高,唯独有一个短板让人很纠结说起当下最热门的手机处理器,当属于高通骁龙870与高通骁龙888。一个性能好,发热适中一个性能处于顶级水准,谁能控制发热谁就是赢家。市面上的手机,搭载骁龙870处理器的,基本都定位风度翩翩不怕冻,飞乐思发热围巾体验,科技与时尚的结合时至大雪时节,天气渐冷,防寒保暖成为本季穿搭的主要任务。特别是在北方地区,出个门里里外外几件必不可少。穿搭上难免显得臃肿,毫无时尚感可言,这对追求时尚的年轻一代来说,简直太受罪。有九州风神水元素360ARGB水冷体验,让机箱沉浸幻彩空间2020年渐渐迎来尾声,在这一年里,科技的更新与发展潜移默化的走进我们的生活。有时,不知不觉就落伍了。不仅仅使用的产品跟不上时代,就连思想也常常是止步不前。曾有个内蒙古的朋友开玩笑Dyplay降噪精英耳机体验,独特设计,宽频主动降噪主动降噪,在最近的几年中逐渐走进我们的日常生活之中,这得益于各品牌的宣传,也由于技术的升级与成本的降低。主动降噪耳机起初,诞生于航空,用于屏蔽飞行中的噪音,以便商旅人士得到更好的休进销存领域唯一!秦丝荣获中国服装协会店铺解决方案推荐项目新一轮技术变革及其应用在全球范围内迅速孕育兴起,推动着服装行业向数字化智能化转型。秦丝科技为中国超过200万批零商户提供了完善的解决方案,引领着行业发展,助力万千服装实体商户转型。看懂了,服装行业的淡旺季一目了然!做好复盘带你拯救销售额又到了客户捡便宜,商家店内夏秋交替大清仓的时候。商家辛苦赚来的钱,都在仓库里面,库存成为庞大的负担,不利于店铺长期的发展,先来了解和服装行业息息相关的淡旺季,再就活动最后的数据,进什么是网桥,用在哪些领域?网桥(Bridge)像一个聪明的中继器。中继器从一个网络电缆里接收信号,放大它们,将其送入下一个电缆。相比较而言,网桥对从关卡上传下来的信息更敏锐一些。网桥是一种对帧进行转发的技术保安出身成深圳金融大佬,身价从2千变百亿,却因P2P涉黑一夜覆灭深圳素来是一个藏龙卧虎之地,其中最有名的坊间传言是保安变金融大佬,这样的故事一直被人津津乐道。然而随着去年深圳中科创金融控股集团董事长张伟的锒铛入狱,最终这个传言不再成为励志故事,又一快递公司被淘汰?144家加盟商被撬走,10天不派件已屡见不鲜双11将至,很多朋友在微信群里提醒购物时不要让商家选择圆通派送。作为三通一达成员之一,圆通快递还获得了阿里巴巴的投资,圆通到底怎么了?这不得从近期圆通全国性的快递积压问题说起。依靠昔日包头首富自焚往事借14亿做豆奶生意,贷款利息最高96今年以来,国内的公司很多出现了资金链断裂的状况,比如恒大地产和华夏幸福地产,还有紫光集团等,这些公司虽然资金链断裂,但是公司还是有较好的盈利性,因此国家尽力推行破产重整,从而改善公克服欲望战胜自己行情来了,持有的股票涨了,而且涨得很多,怎么办呢?拿着自己的股票问别人,总是求不得真经。股市的钱是挣不完的,但能亏的完(融资被平仓)。我是小小散,但却是老韭菜,入市很久来了。现在不
鼓励平台型科技企业参与碳达峰碳中和作者吴静秦浩近日,中央经济工作会议指出,要正确认识和把握碳达峰碳中和,加快形成减污降碳的激励约束机制,防止简单层层分解。这指明了未来实现碳达峰碳中和目标的政策方向。平台型科技企业具又一利民消息!华为酷派传来WiFi6相关喜讯,以后网速要起飞了华为一直是我国实力强劲的行业头部企业,虽然如今因为一些众所周知的原因发展受限,但是这些年积累下来的技术沉淀,依旧让华为得以求生。家大业大的华为,真正实现了专利在手,赚钱不愁。今年年任正非预言成真!余承东传来鸿蒙好消息,与iOS安卓三足鼎立提起华为,相信大家都不陌生,作为国内顶尖的科技公司。华为依靠5G以及麒麟芯片的技术优势,在国际市场中的地位与日递增。但是,由于美国修改相关规则,致使华为在操作系统授权芯片制造领域,智能合约是什么?智能合约是一款计算机软件,其被设计为自动化自我实施合同,这意味着它触发某些动作预定条件满足后自动执行。例如,智能合约可以用作数字协议,在双方之间进行加密货币(或任何其他数字资产)的从2499跌至1999元,12GB256GB6400万三摄,优质旗舰加速退场声明原创不易,禁止搬运,违者必究!这个月既是新机发布月,因为这个月上线的新机,可以说非常多,大多数手机厂商都参与了。与此同时,这个月也有不少机型面临降价。这就是手机市场的日常更迭,25万放弃特斯拉提了奥迪etron,开了890公里,车主有话要说25万放弃特斯拉提了奥迪etron,开了890公里,车主有话要说。今天和大家聊的这台车有点特殊,首先是来自豪华品牌奥迪其次是一台奥迪全新的纯电动中大型另外这台车已经实现了国产化。没电动车板块近期波动点评本文来自新能源研究员刘智超电动车板块近期大幅回落市场的逻辑1市场担心锂价价格过高,成本传导使得终端产品提价影响明年消费需求,碳酸锂紧缺类比于光伏硅料涨价2美国美国基建法案落地延期,京东入选胡润2021全球独角兽榜12月20日,胡润研究院发布2021全球独角兽榜,本次榜单共计上榜1058家独角兽企业。京东工业品入选该项榜单,成为榜单中唯一来自中国的工业品供应链技术与服务平台。胡润研究院从20南极电商5。1亿元纳入78件韩潮商标,重走ABG品牌重塑之路?21世纪经济报道记者朱艺艺杭州报道时隔数月,南极电商(002127。SZ)的多品牌战略再落一子。12月27日,南极电商公告称,董事会监事会审议通过公司以自有资金3。3亿元人民币收购桌面搭配Gobigger便携显示器之前刷视频网站的时候,看到一些up主用便携显示器当做主机的监控屏用便携显示器在高铁上打PS5,引起了我对便携显示器的兴趣,我觉得它的用途非常广泛,游戏机macbook笔记本桌面电脑iPhoneXX彻底消失,就从明年开始我们一直在吐槽苹果为了环保而对iPhone包装盒做的减配取消充电头盒子变薄贴纸取代塑封有网友还嘲讽,干脆明年只给裸机,后年直接让用户自己组装,又环保又省钱除了包装盒之外,iPhon