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

深入了解Redis操作五大数据类型常用命令

  Redis的几个常用命令数据库切换
  我们知道Redis默认有16个数据库,默认是第0个数据库,那么如果在需要对数据库进行切换的时候,我们就可以使用下面这个命令:
  使用如下命令进行切换 SELECT index 1.清除当前数据库的数据
  如果想要清除指定某一个数据库的数据 flushdb 1.
  清除所有数据库的数据 flushall 1.查看数据库所有key
  接下来这个命令应该是最常用的了 keys * 1.判断某个键是否存在
  平常在开发中,我们还需要经常对key进行判断,判断其是否存在 exists key 1.设置过期时间和查看剩余时间
  因为我们设置的缓存数据一般都不能是永久的,这个时候就需要我们在存储数据的时候,就为其设置过期时间。 127.0.0.1:6379> expire test01 10 (integer) 1 127.0.0.1:6379> ttl test01 (integer) -2 1.2.3.4.查看当前key的类型type keyname 1.string数据类型
  string类型是Redis中五大基本数据类型之一,这也是最常使用到的一个数据类型,所有很多小伙伴们对Redis的认识和操作就仅仅的停留在了对Redis的操作层面,但是你是否知道string类型中的相关命令,还是有非常多实用的 String类型存取基本操作
  接下来先看一下对string类型进行基本存储和获取的命令。 127.0.0.1:6379> set key1 v1  #设置key和value OK 127.0.0.1:6379> get key1  #获取key对应的value "v1" 127.0.0.1:6379> keys *  #获取所有的key 1) "key1" 2) "mykey" 3) "hxy" 4) "site-list" 5) "hxy2" 6) "huixiaoyuan" 127.0.0.1:6379> exists key1  #查看当前key是否存在 (integer) 1 127.0.0.1:6379> append key1 hello  #给当前key的value后面追加 (integer) 7 127.0.0.1:6379> strlen key1  #获取value的长度 (integer) 7 1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.递增递减操作
  如果我们存储的string中的内容是数字的话,我们也可以对其进行增或减操作,Redis可以自动的对字符串进行相关的操作。实现的命令如下: 127.0.0.1:6379> set views 0 OK 127.0.0.1:6379> get views "0" 127.0.0.1:6379> incr views (integer) 1 127.0.0.1:6379> decr views (integer) 1 127.0.0.1:6379> incrby views 10 (integer) 9 127.0.0.1:6379> decrby view 9 (integer) -9 127.0.0.1:6379> get views "9" 127.0.0.1:6379> decrby views 9 (integer) 0 127.0.0.1:6379> 1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.setex和setnx使用setex 设置过期时间setnx 不存在再设置,如果存在就设置不成功。常用于分布式锁#设置key3的值为hello,过期时间为30秒 127.0.0.1:6379> setex key3 30 hello OK 127.0.0.1:6379> ttl key3 (integer) 21 127.0.0.1:6379> get key3 "hello" 127.0.0.1:6379> setnx mykey2 redis (integer) 1 127.0.0.1:6379> setnx mykey2 hxy (integer) 0 127.0.0.1:6379> get mykey2 "redis" 127.0.0.1:6379> 1.2.3.4.5.6.7.8.9.10.11.12.13.14.mset和mget进行批量设置
  使用msetnx时,同时设置一个或多个 key-value 对,当且仅当所有给定 key都不存在时才成立。 127.0.0.1:6379> mset k1 v1 k2 v2 k3 v3 OK 127.0.0.1:6379> mget k1 k2 k3 1) "v1" 2) "v2" 3) "v3" 127.0.0.1:6379> msetnx k1 v1 k4 v4 (integer) 0 127.0.0.1:6379> get k4 (nil) 127.0.0.1:6379> 1.2.3.4.5.6.7.8.9.10.11.getset命令使用
  getset命令从字面意思就可以看出来,他的作用是先get再set。 #如果不存在值,则返回null 127.0.0.1:6379> getset k5 v5 (nil) 127.0.0.1:6379> get k5 "v5" 如果存在值,就先获取再设置新的值 127.0.0.1:6379> getset k5 vv5 "v5" 127.0.0.1:6379> get k5 "vv5" 1.2.3.4.5.6.7.8.9.10.
  总结string类似的使用场景: 计数器统计多单位数量对象缓存存储粉丝数list数据类型list存取基本操作
  在使用list类型进行存取的时候,有两个命令需要进行区分: lpush:从左边插入元素rpush:从右边插入元素127.0.0.1:6379> lpush list1 v1 (integer) 1 127.0.0.1:6379> lpush list1 v2 (integer) 2 127.0.0.1:6379> lpush list1 v3 (integer) 3 127.0.0.1:6379> lrange list1 0 1 1) "v3" 2) "v2" 127.0.0.1:6379> rpush list1 v4 (integer) 4 127.0.0.1:6379> lrange list1 0 4 1) "v3" 2) "v2" 3) "v1" 4) "v4" 1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.list类型移除元素lpop 从左边删除rpop 从右边删除lrange keyname 0 -1 获取list中的全部元素127.0.0.1:6379> lpop list1 "v3" 127.0.0.1:6379> rpop list1 "v4" 127.0.0.1:6379> lrange list1 0 -1 1) "v2" 2) "v1" 127.0.0.1:6379> 1.2.3.4.5.6.7.8.
  注意:只有pop和push才分左右,其他的l都是list的意思
  总结: redis中的list其实是一个链表。before node after,left,right都可以插入值如果key不存在,就创建新的链表如果key存在,就新增内容如果移除了所有值,空链表,也代表不存在在两边插入或改动值效率最高,中间元素效率相对来说会低一点set集合set集合存取基本操作127.0.0.1:6379> sadd myset hello (integer) 1 127.0.0.1:6379> sadd myset hello2 (integer) 1 127.0.0.1:6379> sadd myset hello3 (integer) 1 127.0.0.1:6379> smembers myset 1) "hello" 2) "hello3" 3) "hello2" 127.0.0.1:6379> sismember myset hello (integer) 1 127.0.0.1:6379> sismember myset world (integer) 0 127.0.0.1:6379> 1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.获取set中元素个数127.0.0.1:6379> scard myset (integer) 3 1.2.移除set集合中的指定元素127.0.0.1:6379> srem myset hello (integer) 1 127.0.0.1:6379> scard myset (integer) 2 1.2.3.4.随机抽选出指定个数的元素127.0.0.1:6379> srandmember myset "hello3" 127.0.0.1:6379> srandmember myset 2 1) "hello2" 2) "hello3" 1.2.3.4.5.随机删除一个元素127.0.0.1:6379> spop myset "hello2" 1.2.SDIFF差集 SINTER交集 SUNION并集SDIFF keyname1 keyname2 1.
  总结set集合一般用于元素的不重复的场景,比如抽奖系统,轮播等场景下 Hash(哈希)Hash存取基本操作
  在使用hash集合的时候,要注意,hash其实就是一个Map集合,key-map的时候,值是一个map集合的形式进行存储的,也和Java中的hashmap有一个类似。 #set一个具体的key-value 127.0.0.1:6379> hset myhash fieid1 v1 (integer) 1 127.0.0.1:6379> hget myhash fieid1 "v1" #set多个key-value 127.0.0.1:6379> hmset myhash fieid1 v1 fieid2 v2 OK #get多个字段值 127.0.0.1:6379> hmget myhash fieid1 fieid2 1) "v1" 2) "v2" 1.2.3.4.5.6.7.8.9.10.11.12.
  HVALS获取所有的value,HKEYS获取所有的key,HGETALL获取所有的键值 127.0.0.1:6379> HVALS myhash 1) "v1" 2) "v2" 127.0.0.1:6379> HKEYS myhash 1) "fieid1" 2) "fieid2" 127.0.0.1:6379> HGETALL myhash 1) "fieid1" 2) "v1" 3) "fieid2" 4) "v2" 1.2.3.4.5.6.7.8.9.10.11.
  总结:
  hash可以用于存储变更的数据,比如user,name,age等,尤其是用户信息之类的,hash更加适合用于对象的存储,string更加适合用于字符串的存储。 Zset(有序集合)
  在set集合的基础上增加一个序列号,来进行排序 Zset有序集合存取基本操作127.0.0.1:6379> ZADD salary 2500 xiaohong (integer) 1 127.0.0.1:6379> ZADD salary 6000 dahui (integer) 1 127.0.0.1:6379> ZADD salary 1000 wanggang (integer) 1 #指定输出范围是负无穷到正无穷,按照从小到大排序, 127.0.0.1:6379> ZRANGEBYSCORE salary -inf +inf 1) "wanggang" 2) "xiaohong" 3) "dahui" # 从大到小排序 127.0.0.1:6379> ZREVRANGE salary 0 -1 1) "dahui" 2) "xiaohong" 3) "wanggang" 1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.
  ZRANGEBYSCORE使用语法 ZRANGEBYSCORE key min max 1.显示所有数据,并且key和value同时显示127.0.0.1:6379>  ZRANGEBYSCORE salary -inf +inf withscores 1) "wanggang" 2) "1000" 3) "xiaohong" 4) "2500" 5) "dahui" 6) "6000" 1.2.3.4.5.6.7.获取集合中元素的个数127.0.0.1:6379> ZCARD salary (integer) 3 1.2.
  总结 案例思路:set排序,存储班级成绩,工资表排序普通消息1,重要消息2,带权重进行判断排行榜应用实现
  以上是在对五种数据类型进行存取时的一些常用命令操作。关于其他的命令使用,小伙伴们在用到的时候可以直接入官网查看就可以了。

3000块的冰箱和6000块的冰箱有什么区别?从前用冰箱只用3000多元的时候,一直不能理解,为什么3000块钱的冰箱已经这么好用了,为什么还有人花多一倍的钱去买个6000多块钱的冰箱。直到前不久买了个6000多的冰箱,我才知刘作虎送上一加10Pro首销战报1秒破亿!网友1秒完成付款?为了体现自家的新机销售火爆,相关的新机在首销后,手机厂商一般都会送出新机的首销战报。说到战报,手机行业可谓是五花八门,有的简单粗暴非常有用,直接送上新机的销售额,可以大概算出销量,荣耀畅玩8CvivoY10t1版参数报价对比荣耀畅玩8C手机机型荣耀畅玩8CvivoY10t1版最新价格1099元1099元屏幕尺寸6。26英寸6。51英寸屏幕类型TFTLCDLCD屏幕色彩1670万1670万分辨率1520发布十个月下跌1210元,12GB256GBIP68,四摄旗舰无奈加速退场原本以为国产手机会一直进步,但没想到2022国产手机还出现了大批退步的情况,有购买过支持IP68防水功能旗舰的消费者都知道,这是手机上最高规格的防尘防水等级,在国际市场中也是高端旗被低估的3款旗舰机,有颜值又有性能,选哪个都不亏回想去年的时候,国内市场的竞争可谓是相当激烈,各大手机厂商纷纷转向高端市场,也带来了很多惊艳的高端机,甚至一些子品牌也推出了高端机,他们通常在硬件配置上堆料很足,售价也都在四五千元不喜欢苹果手机,那就买这3款旗舰机,性价比高,关键可以再用3年到了年底很多用户想要更换手机,如果要推荐新的高端手机,那自然是苹果手机莫属了,如果你不喜欢使用苹果手机,那还可以购买这3款旗舰机,目前这三款旗舰机型价格都有所下调,性价比更高,关键自研C2芯片!屏下前摄骁龙8Gen1,小米MIX5携5000mAh大电池亮相新的一年,小米科技已经为市场带来了新一代数字旗舰小米12系列机型,不过从配置上来看,小米似乎把不少东西都留给了小米12Ultra以及小米MIX5,比如自研芯片屏下前摄等。近日,有博第4季度手机降价王三星GalaxyZFold3夺冠杰昇通信近日公布第四季降价手机排名,第四季降价榜总降幅范围在532,季降幅则是524不等,第四季降价的机型都是5G旗舰机,3个月内降价金额最高的是三星GalaxyZFold3(12iPhone13到手之后,iOS这些技巧还不知道?手机真是白买了分享最实在的玩机技巧,洞察最前沿的科技资讯!大家好,这里是手机科技园!恭喜您成为尊贵的苹果13机主,愿您的爱情与事业,像iOS系统一样丝滑流畅,蒸蒸日上!iPhone13到手之后,折叠屏手机供不应求行业中低端芯片依然紧缺e公司讯,记者通过采访调查等发现,尽管目前折叠屏手机技术量产能力等较此前有了飞跃式发展,但由于市场需求远高于厂家预期,当前市场折叠屏手机仍处于供不应求的状态,京东等各电商平台上,近新规尝鲜未经同意不得将快递放到代收点NEWS近日国家邮政局研究起草了快递市场管理办法(修订草案),并向社会公开征求意见。经过了解,原来的快递市场管理办法是2008年7月12日发布,并在2012年12月31日修改过一次
Mac强制关机的5个办法嗨,我是Mac小仙。再好的电脑,也会碰到卡死或软件崩溃导致无法关机或重启的情况。试试这5个办法,最后那招可厉害了!1强制关机长按电源键,10秒左右。2强制断电shiftcontro精密空调氟里昂漏了怎么办?众所周知,精密空调功率密度大所以体积发热量高,交换数据等精密仍然需要通过空调压缩机不断制冷来达到通信空调对环境温度的要求,而氟里昂通过水泵的运转,将乙二醇水溶液作为载冷剂进行室内室家用空调科学使用常识设置使用注意事项。不要频繁的开关空调器,因为压缩机启动时候的电流是正常运行电流的很多倍,容易烧坏压缩机的电机。。请不要往空调器的室外机上放东西,以免产生空调的噪音,对空调器来说,是搭配海思麒麟芯片手机目前现状最近看到过很多关于华为手机海思麒麟芯片的断供问题,比如网上说华为MATE40海思麒麟9000芯片很可能成为麒麟高端芯片的最后一代也有说国内芯片制造商加速升级制造高端芯片等等!我作为OPPO新款5G手机realme(真我)Q2硬件参数详解最近在营业厅,见部分顾客纠结到底买5G还是4G?出现这个现象大多数是购买意向在1000元1500元之间的低端客户。因为在市场上1500元以上的基本上全部是5G手机,无论华为OPPOVIVO5G手机X50X50PRO及X50PRO如何购买不后悔在很短的时间内,VIVO突发多款5G手机,从开年以来至少上市15款5G手机,价格也已经布局到1598元(官网参考价),感觉与X为齐头并进。今天主要谈谈VIVO的5G手机X50X50VIVO新款实惠5G手机IQOOU3目前在一线品牌的5G手机中,价格在1500以内的分别是OPPOA72低配,红米NOTE9低配,OPPORealmeQ2,OPPORealmeV5低配,以上几个5G手机型号的具体配置OPPO新款5G手机RENO5系列硬件参数详解OPPORENO5系列于2020年12月10日正式发布,目前还处于预订阶段。RENO5系列共有两个版本,分别是RENO5和RENO5PRO,这两个版本在配置方面最大区别就是处理器和关于芯片机密数据,台积电三次改口,还是任正非有远见近些年随着科技的发展,很多领域对芯片的需求都是水涨船高,作为工业粮食,芯片的重要性不言而喻,小到蓝牙耳机大到飞机轮船,都离不开它的驱动。然而,由于美国对华为等中企的打压,打破了原有锁定胜局?Note11凭什么?卢伟冰120W充电头真心很贵在前不久RedmiNote11发布会上,卢伟冰对外宣布,Note系列的全球出货量已累计约240000000部,其中在过去5个月的时间里,Note系列手机就新增了40000000部的华为新款5G手机NOVA8SE华为NOVA系列的5G手机(nova7系列)从上市至今,我所在营业厅对这个系列的销售情况还比较不错,应该占有整体5G手机(包括OPPOVIVO和华为其它5G手机)销售的30,那么市