编程杂谈

说明Redis为订阅&发布模型如下,共有6个命令。相关命令subscribe订阅subscribechannel[channels]127.0.0.1:6379>subscribenews.itnews.sportReadingmessages...(pressCtrl-Ctoquit)1)"subscribe"2)"news.it"3)(integer)11)"subscribe"2)"news.sport"3)(integer)2#订阅后客户端挂起等待接受消息psubscribe模式订阅psubscribe与subscribe的差别只有一个地方,其他都一样subscribe:只能订阅指定名称的频道psubscribe:可以使用通配符指定频道#客户端1使用模式订阅127.0.0.1:6379>psubscribenews.*Readingmessages...(pressCtrl-Ctoquit)1)"psubscribe"2)"news.*"3)(integer)1#接收到的消息1)"pmessage"2)"news.*"3)"news.a"4)"testa"1)"pmessage"2)"news.*"3)"news.b"4)"testb"#客户端2发送消息127.0.0.1:6379>publishnews.atesta(integer)1127.0.0.1:6379>publishnews.btestb(integer)1publish发送消息publishchannelmessage发送消息到指定的频道127.0.0.1:6379>publishnews.ittest(integer)1#发送成功127.0.0.1:6379>publishxxtest(integer)0#发送失败pubsub查看订阅状态pubsub<子命令>pubsubchannels:默认查看所有使用subscribe命令订阅的频道,可以使用匹配127.0.0.1:6379>pubsubchannels1)"news.sport"2)"news.it"127.0.0.1:6379>pubsubchannelsnews.*1)"news.sport"2)"news.it"pubsubnumsubchannel[channel]:查看指定频道订阅的数量127.0.0.1:6379>pubsubnumsubnews.itnews.sport1)"news.it"2)(integer)13)"news.sport"4)(integer)1pubsubnumpat:返回使用psubscribe命令客户端的总数量#客户端1订阅127.0.0.1:6379>psubscribenews.goodReadingmessages...(pressCtrl-Ctoquit)1)"psubscribe"2)"news.good"3)(integer)1#客户端2查看psubscribe订阅的数量127.0.0.1:6379>pubsubnumpat(integer)1127.0.0.1:6379>unsubscribe退订指定的频道unsubscribechannel[channels]127.0.0.1:6379>unsubscribenews.it#退订news.it频道1)"unsubscribe"#退订2)"news.it"#退订的频道名称3)(integer)0#订阅的数量punsubscribe退订使用模式订阅频道punsubscribechannel[channels]的差别只有一个地方,其他都一样unsubscribe:只能退订指定名称的频道punsubscribe:可以使用通配符退订频道127.0.0.1:6379>punsubscribenews.*1)"punsubscribe"#退订2)"news.*"#退订的频道名称3)(integer)0#订阅的数量

编程杂谈

tip:以下配置文件为windows上的,Linux版本可以参考配置文件的单位大小写不敏感INCLUDES包含可以把多个conf文件,组合成一个##################################INCLUDES###################################...#include.\path\to\local.conf#includec:\path\to\other.confNETWORK网络##################################NETWORK#####################################...#绑定IP,可以绑定多个#如需远程访问,可以填本机IPbind127.0.0.1#默认protected-modeyes#保护模式(默认)port6379#端口(默认)GENERAL通用#windows不支持daemonizeno#以守护进程(后台)运行,默认no,需要改为yessupervisedno#守护进程管理默认no,不用管#windows不支持pidfile/var/run/redis.pid#以守护进程运行,需要指定pid文件loglevelnotice#日志级别,默认notice,支持debug、verbose、notice、warninglogfile""#日志输入文件,默认控制台输出databases16#默认16个数据库always-show-logoyes#启动是的logo显示SNAPSHOTTING快照持久化的配置主要在此部分################################SNAPSHOTTING#################################执行持久化保存的时间save9001#900秒改动1次,执行1次持久化操作save30010#300改动10次,执行1次持久化操作save6010000stop-writes-on-bgsave-erroryes#持久化出错,是否继续工作,默认yesrdbcompressionyes#是否压缩rdb文件,默认yes,需要消耗CPU的性能rdbchecksumyes#保存rdb文件时校验,默认yesdbfilenamedump.rdb#rdb文件的路径,默认当前路径REPLICATION主从复制Redis启动默认为主机#在配置主从复制中只需修改从机的配置文件#replicaof<masterip><masterport>#主机ipportSECURITY安全密码配置文件##################################SECURITY####################################requirepassfoobared#密码,默认没有命令行127.0.0.1:6379>configgetrequirepass#获取密码1)"requirepass"2)""127.0.0.1:6379>configsetrequirepass123456#设置密码OK127.0.0.1:6379>configsetrequirepass(error)NOAUTHAuthenticationrequired.#设置后需要验证密码127.0.0.1:6379>auth123456#验证密码OK127.0.0.1:6379>configgetrequirepass1)"requirepass"2)"123456"CLIENTS客户端客户端的限制###################################CLIENTS#####################################maxclients10000#客户端最大连接数量MEMORYMANAGEMENT内存设置##############################MEMORYMANAGEMENT#################################maxmemory<bytes>#最大的内存容量#maxmemory-policynoeviction#内存达到上限的处理策略#volatile-lru->使用带有过期时间的Key使用lru算法进行删除。#allkeys-lru->使用lru算法进行删除Key#volatile-random->随机删除一些有过期时间的Key#allkeys-random->随机删除一些Key#volatile-ttl->删除最近要过期的Key#noeviction->不要删除任何东西,只在写操作时返回一个错误。【默认】APPENDONLYMODE(AOF持久化)主要功能是记录改变Key的操作##############################APPENDONLYMODE###############################appendonlyno#默认no不开启,大部分情况rdb完全够用appendfilename"appendonly.aof"#aof持久化文件路径appendfsynceverysec#执行aof持久化同步操作的模式,有三种#always->每次修改值,都会执行fsync(),消耗资源#everysec->每秒执行一次fsync(),可能丢失这一秒的数据(默认)#no->不执行fsync(),让操作系统在需要的时候刷新数据,速度快

编程杂谈

什么是持久化Redis是内存数据库,数据保存在内存中,当关机时,内存中的数据也就丢失了。持久化就是把内存中的数据写入到磁盘上,保存内存在断电情况下,数据也不会丢失。RDB(RedisDataBase)RDB文件是在硬盘上的二进制文件;RDB文件是Redis在内存存储的数据在某一时刻的快照;RDB文件可在Redis启动的时候自动载入;RDB文件是Redis节点复制时的媒介;相关配置#RDB自动持久化规则#当900秒内有至少有1个键被改动时,自动进行数据集保存操作save9001#当300秒内有至少有10个键被改动时,自动进行数据集保存操作save30010#当60秒内有至少有10000个键被改动时,自动进行数据集保存操作save6010000#RDB持久化文件名dbfilenamedump.rdb#数据持久化文件存储目录dir./#bgsave发生错误时是否停止写入,通常为yesstop-writes-on-bgsave-erroryes#rdb文件是否使用压缩格式rdbcompressionyes#是否对rdb文件进行校验和检验,通常为yesrdbchecksumyes持久化过程Redis会单独创建一个子线程来进行持久化操作,会先将内存中的数据写入到一个文件中,待持久化结束后,再替换掉上次持久化的文件,整个过程中,主进程不进行IO操作,保证了性能。缺点:最后一次持久化的数据可能丢失(子进程还没有写入完成就被某种原因关闭)触发RDB持久化机制的方式手动触发save、bgsavesave命令会阻塞Redis服务器进程,直到RDB文件创建完毕为止,在Redis服务器阻塞期间,服务器不能处理任何命令请求。bgsave命令会创建一个子进程,由子进程来负责创建RDB文件,父进程(即Redis主进程)则继续处理请求。127.0.0.1:6379>saveOK127.0.0.1:6379>bgsaveBackgroundsavingstarted自动触发规则,在配置文件配置save9001save30010save6010000AOF(AppendOnlyFile)快照功能(RDB)并不是非常耐久(durable):如果Redis因为某些原因而造成故障停机,那么服务器将丢失最近写入、且仍未保存到快照中的那些数据。从1.1版本开始,Redis增加了一种完全耐久的持久化方式:AOF持久化。需要在配置文件开启,重启Redis服务生效。appendonlyyes相关配置#开启AOF持久化方式appendonlyyes#AOF持久化文件名appendfilenameappendonly-<port>.aof#appendfsyncalways#每次修改值,都会同步数据到磁盘,消耗资源appendfsynceverysec#每秒把缓冲区的数据同步到磁盘#appendfsyncno#不执行数据同步,让操作系统在需要的时候刷新数据#数据持久化文件存储目录dir./#是否在执行重写时不同步数据到AOF文件#这里的yes,就是执行重写时不同步数据到AOF文件no-appendfsync-on-rewriteyes#触发AOF文件执行重写的最小尺寸auto-aof-rewrite-min-size64mb#触发AOF文件执行重写的增长率auto-aof-rewrite-percentage100执行流程windows下需要使用redis-server.exeredis.windows.conf启动,配置文件才生效127.0.0.1:6379>setk1v1OK127.0.0.1:6379>setk2v2OK127.0.0.1:6379>setk3v3OK127.0.0.1:6379>setk4v4OK127.0.0.1:6379>getk2"v2"127.0.0.1:6379>setk5v5OK可以看到修改值的操作都被记录下来了AOF文件修复Redis自带有redis-check-aof程序,用来修复AOF文件,修复后的文件能打开,但会出现数据丢失的情况,至少比不能打开好。删除RDB文件(里面有完整数据),破坏AOF文件(删除某些文件),模拟数据被破坏的场景。启动Redis服务,启动失败使用aof修复工具,修复成功再次启动Redis服务,启动成功查看所有的Key,发现只有两个,其他的已经丢失,至少能打开了扩展对比-RDBAOF启动优先级低高体积小大恢复速度快慢数据安全性丢数据根据策略决定RDB持久化方式能够在指定的时间间隔能对你的数据进行快照存储AOF持久化方式记录每次对服务器写的操作,当服务器重启的时候会重新执行这些命令恢复原始的数据,AOF命令以Redis协议追加保存每次写的操作到文件末尾。Redis还能对AOF文件进行后台重写(缩减某些格式),使得AOF文件的体积不至于过大。只做缓存,如果你只希望你的数据在服务器运行的时候存在,你也可以不使用任何持久化方式.同时开启两种持久化方式在这种情况下,当Redis重启的时候会优先载入AOF文件来恢复原始的数据,因为在通常情况下AOF文件保存的数据集要比RDB文件保存的数据集要完整。RDB的数据不实时,同时使用两者时服务器重启也只会找AOF文件。那要不要只使用AOF呢?作者建议不要,因为RDB更适合用于备份数据库(AOF在不断变化不好备份),快速重启,而且不会有AOF可能潜在的bug,留着作为一个万一的手段。性能建议:因为RDB文件只用作后备用途,建议只在Slave上持久化RDB文件,而且只要15分钟备份一次就够了,只保留save9001这条规则。如果启用AOF,好处是在最恶劣情况下也只会丢失不超过两秒数据,启动脚本较简单只load自己的AOF文件就可以了。代价一是带来了持续的IO,二是AOFrewrite的最后将rewrite过程中产生的新数据写到新文件造成的阻塞几乎是不可避免的。只要硬盘许可,应该尽量减少AOFrewrite的频率,AOF重写的基础大小默认值64M太小了,可以设到5G以上。默认超过原大小100%大小时重写可以改到适当的数值。如果不启用AOF,仅靠Master-SlaveReplication(主从复制)实现高可用性也可以。能省掉一大笔IO也减少了rewrite时带来的系统波动。代价是如果Master/Slave同时倒掉,会丢失十几分钟的数据,启动脚本也要比较两个Master/Slave中的RDB文件,载入较新的那个。

2022-2-1 426 0
2022-1-30 506 0
编程杂谈

说明常应用于附近的人、两地距离计算、朋友圈定位…中文文档:http://redis.cn/commands/geoadd.html将有效的地理空间位置(经度,纬度,名称)添加到指定的Key中,这些Key会存到Hset(有序集合)中。有效的经度从-180度到180度。有效的纬度从-85.05112878度到85.05112878度。该类型的底层实现是Hset(有序聚合),所以也能使用有序集合的命令操作常用六大命令地理位置的坐标可以在网络上下载完整的信息进行添加geoaddkeylongitudelatitudemember[longitudelatitudemember...]127.0.0.1:6379>geoaddchina:city104.06573530.659462chengdu(integer)1127.0.0.1:6379>geoaddchina:city116.40528539.904989beijing114.08594722.547shenzhen(integer)2获取地理位置的坐标geoposkeymember[member]127.0.0.1:6379>geoposchina:citybeijing1)1)"116.40528291463851929"2)"39.9049884229125027"127.0.0.1:6379>geoposchina:citybeijingshenzhen1)1)"116.40528291463851929"2)"39.9049884229125027"2)1)"114.08594459295272827"2)"22.54699993773966327"获取两地距离keymember1member2[unit][unit]:m(米)、km(千米)、mi(英里)、ft(尺)127.0.0.1:6379>geodistchina:citybeijingshenzhenkm"1943.0240"获取附近的位置集合需要给==经纬度==通过半径来返回位置集合georadiuskeylongitudelatituderaidusm|km|ft|mi[withcoord][withdist][withhash][COUNTcount][asc|desc][storekey][storedistkey]下列可选参数是在返回结果上嵌套一层显示[withcoord]:返回结果显示位置经纬度[withdist]:返回结果显示距离[COUNTcount]:指定返回结果的数量[withhash]:返回结果哈希[asc|desc]:根据中心,由近到远|由远到近返回结果127.0.0.1:6379>georadiuschina:city110301000km1)"chengdu"2)"shenzhen"127.0.0.1:6379>georadiuschina:city110301000kmwithcoordwithdistwithhashasccount21)1)"chengdu"2)"574.3396"3)(integer)40261377941277544)1)"104.06573742628097534"2)"30.65946118872339099"2)1)"shenzhen"2)"923.4929"3)(integer)40464337336821184)1)"114.08594459295272827"2)"22.54699993773966327"获取附近的位置集合需要给==位置==通过半径来返回位置集合georadiusbymemberkeymemberraidusm|km|ft|mi[withcoord][withdist][withhash][COUNTcount][asc|desc][storekey][storedistkey]下列可选参数是在返回结果上嵌套一层显示[withcoord]:返回结果显示位置经纬度[withdist]:返回结果显示距离[COUNTcount]:指定返回结果的数量[withhash]:返回结果哈希[asc|desc]:根据中心,由近到远|由远到近返回结果127.0.0.1:6379>georadiusbymemberchina:citybeijing2000km1)"chengdu"2)"shenzhen"3)"beijing"127.0.0.1:6379>georadiusbymemberchina:citybeijing2000kmwithcoordwithdistwithhashasccount21)1)"beijing"2)"0.0000"3)(integer)40698853706710104)1)"116.40528291463851929"2)"39.9049884229125027"2)1)"chengdu"2)"1517.9907"3)(integer)40261377941277544)1)"104.06573742628097534"2)"30.65946118872339099"获取位置HASH将二维经纬度信息,转换成一维字符串,返回的11位哈希值字符串越相似,说明距离越近geohashkeymember[member]127.0.0.1:6379>GEOHASHchina:citybeijingchengdushenzhen1)"wx4g0b7xrt0"2)"wm6n2j6k730"3)"ws10k0dcg10"

编程杂谈

说明中文文档:http://redis.cn/documentation.htmlString文档:http://redis.cn/commands.html#stringList文档:http://redis.cn/commands.html#listSet文档:http://redis.cn/commands.html#setHash文档:http://redis.cn/commands.html#hashHset文档:http://redis.cn/commands.html#sorted_setKey实际使用中,建议key使用:(冒号)分割不同层次127.0.0.1:6379>setuser:2:nameAoaOK127.0.0.1:6379>setuser:1:nameBobOKString类型最简单Redis类型##设置K-V#################################################setkv[nx|xx][过期时间/秒]127.0.0.1:6379>setkvnx#Key不存在设置(分布式锁用到)OK127.0.0.1:6379>setkvnx(nil)127.0.0.1:6379>setkkvxx#Key存在设置(nil)##V自增|减#################################################原子性几个客户端同时操作会增加|减少127.0.0.1:6379>setk10OK127.0.0.1:6379>incrk#key自增1(integer)11127.0.0.1:6379>incrbyk10#key增加10(integer)21127.0.0.1:6379>decrk#key自减1(integer)20127.0.0.1:6379>decrbyk5#key减少5(integer)15##批量set|get#################################################原子操作一起成功|一起失败127.0.0.1:6379>msetk1v1k2v2k3v3OK127.0.0.1:6379>mgetk1k2k31)"v1"2)"v2"3)"v3"##修改|检查|删除################################################127.0.0.1:6379>setkvv#再次设置为修改OK127.0.0.1:6379>existsk#检查是否存在(integer)1127.0.0.1:6379>delk#删除并返回(integer)1127.0.0.1:6379>existsk(integer)0##获取指定长度#################################################getrange键起始位置长度127.0.0.1:6379>setkabcdeOK127.0.0.1:6379>getrangek12#getrange"bc"127.0.0.1:6379>getrangek0-1"abcde"##设置指定'位置'的值#################################################setrange键位置值127.0.0.1:6379>setkabcdeOK127.0.0.1:6379>setrangek1mm#setrange(integer)5127.0.0.1:6379>getk"ammde"List列表list列表常用于队列和栈的操作。【消息队列】实际上是一个链表如果key不存在,就创建新的链表如果key存在,就添加值移除了所有值,也就不存在了两边插入或者改动值,效率最高高!对中间元素进行操作,效率就相对于低一些##添加值(头部)#################################################lpush键值(一个值或者多个值)127.0.0.1:6379>lpushkv1(integer)1127.0.0.1:6379>lpushkv2(integer)2127.0.0.1:6379>lpushkv3(integer)3127.0.0.1:6379>LPUSHkv4v5(integer)5127.0.0.1:6379>##添加值(尾部)#################################################rpush键值(一个值或者多个值)127.0.0.1:6379>rpushkv6(integer)6##查看值(批量)#################################################lrange键startend127.0.0.1:6379>lrangek0-11)"v5"2)"v4"3)"v3"4)"v2"5)"v1"6)"v6"127.0.0.1:6379>lrangek011)"v5"2)"v4"##查看值(单个索引)#################################################lindex键索引127.0.0.1:6379>lindexk1"v4"##删除值(头部)#################################################lpop键[timeout]删除值并返回127.0.0.1:6379>lpopk"v5"##删除值(尾部)#################################################rpop键[timeout]删除值并返回127.0.0.1:6379>rpopk"v6"##获取长度################################################127.0.0.1:6379>llenk(integer)4##移除指定值#################################################lrem键数量值(移除多个数量时,是移除相同值)127.0.0.1:6379>lremk1v1(integer)1##修剪#################################################ltrim键01(修剪后,原来数据列表数据被改变)127.0.0.1:6379>ltrimk01OK(integer)1##修改值(替换值)#################################################指定下标,替换值127.0.0.1:6379>lrangek0-11)"v4"2)"v3"127.0.0.1:6379>lsetk3v2#修改值(error)ERRindexoutofrange#超出索引127.0.0.1:6379>lsetk1v2#修改值OK127.0.0.1:6379>lrangek0-11)"v4"2)"v2"##插入值#################################################linsert键before|after值插入值(某个值之前|之后添加)127.0.0.1:6379>linsertkbeforev2v3(integer)3127.0.0.1:6379>lrangek0-11)"v4"2)"v3"3)"v2"127.0.0.1:6379>linsertkafterv2v5(integer)4127.0.0.1:6379>lrangek0-11)"v4"2)"v3"3)"v2"4)"v5"127.0.0.1:6379>Set集合Set里面的值,是无序不重复的##添加值################################################127.0.0.1:6379>saddkv1(integer)1127.0.0.1:6379>saddkv2(integer)1##查看所有值################################################127.0.0.1:6379>smembersk1)"v2"2)"v1"##值是否存在################################################127.0.0.1:6379>sismemberkv5(integer)0127.0.0.1:6379>sismemberkv2(integer)1##获取Set集合元素个数################################################127.0.0.1:6379>scardk(integer)2##移除元素################################################127.0.0.1:6379>sremkv2(integer)1127.0.0.1:6379>smembersk1)"v1"##获取值(随机)#################################################srandmemberk[count]Set无序不重复,所以是随机获取127.0.0.1:6379>srandmemberk"v4"127.0.0.1:6379>SRANDMEMBERk"v3"127.0.0.1:6379>SRANDMEMBERk"v3"##删除值(随机)#################################################spopk[count]127.0.0.1:6379>spopk"v4"##移动值#################################################SMOVE源集合目标集合值(移动Set1元素到Set2)127.0.0.1:6379>SMOVEkk1v1(integer)1使用技巧交集,并集,差集127.0.0.1:6379>sdiffk1k2#差集1)"v1"127.0.0.1:6379>127.0.0.1:6379>sinterk1k2#交集(emptylistorset)127.0.0.1:6379>sunionk1k2#并集1)"v1"Hash哈希存储形式(Key-Map集合)Hash更适用于经常变更的数据,尤其用户数据之类的.Hash适用于对象的存储(用户、姓名、性别)String更适用于字符的存储##单个设置值################################################127.0.0.1:6379>hsetkhash1value1(integer)1##批量设置值################################################127.0.0.1:6379>HMSETkhash1value1hash2value2OK##查看所有Hash################################################127.0.0.1:6379>hgetallk1)"hash1"2)"value1"3)"hash2"4)"value2"##删除单个|多个Hash#################################################hdel键Map键(可以多个)127.0.0.1:6379>hdelkhash1(integer)1##Hash字段数量################################################127.0.0.1:6379>hlenk(integer)1##某个Hash是否存在#################################################127.0.0.1:6379>hexistskhash1(integer)0#不存在127.0.0.1:6379>hexistskhash2(integer)1#存在127.0.0.1:6379>##获取Hash所有key&value#################################################127.0.0.1:6379>hkeysk1)"hash2"127.0.0.1:6379>hvalsk1)"value2"127.0.0.1:6379>##Hash自增|自减################################################127.0.0.1:6379>hsetkhash1(integer)1127.0.0.1:6379>hincrbykhash1#增加(integer)2127.0.0.1:6379>hincrbykhash-1#减少(integer)1Zset有序集合在Set基础上,增加一个顺序段##添加值#################################################zadd键score值127.0.0.1:6379>zaddk1value1(integer)1127.0.0.1:6379>zaddk2value23value3(integer)2127.0.0.1:6379>##排序################################################127.0.0.1:6379>zaddk55value244value311value1(integer)3127.0.0.1:6379>zrevrangek0-1#大~小1)"value2"2)"value3"3)"value1"127.0.0.1:6379>zrangek0-1#小~大1)"value1"2)"value3"3)"value2"127.0.0.1:6379>##通过score段排序#################################################zrangebyscore键小值大值[withscores](小~大排序)127.0.0.1:6379>zaddk55value244value311value1(integer)3127.0.0.1:6379>zrangebyscorek-inf+inf#无穷小无穷大1)"value1"2)"value3"3)"value2"127.0.0.1:6379>ZRANGEBYSCOREk-inf+infwithscores1)"value1"2)"11"3)"value3"4)"44"5)"value2"6)"55"127.0.0.1:6379>##移除元素#################################################zremkmember[可以多个]通过member段移除127.0.0.1:6379>zremkvalue1(integer)1127.0.0.1:6379>zrangek0-11)"value3"2)"value2"##获取元素个数################################################127.0.0.1:6379>zcardk(integer)2##元素区间统计#################################################zcountkminmax127.0.0.1:6379>zcountk4466(integer)2使用技巧带权重元素的使用:1重要消息,2普通消息成绩表、工资表排行榜的实现

编程杂谈

介绍Redis是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。官网:https://redis.io/中文官网:http://www.redis.cn/安装Windows安装Redis不推荐在Windows上使用,但可用以学习msi是安装程序,为了方便Linux上手下载压缩包下载地址:https://github.com/tporadowski/redis/releases解压点击redis-server.exe启动服务器点击redis-cli.exe启动客户端Linux安装==待补==性能测试快速测试直接点击redis-benchmark.exe带参测试redis-benchmark.exe-n10000-c50-q相关参数WindowsRidis可视化国内下载地址:https://gitee.com/qishibo/AnotherRedisDesktopManager/releases官方中文地址:https://github.com/qishibo/AnotherRedisDesktopManager/blob/master/README.zh-CN.md小知识Redis小知识&问题【遇到补】默认端口6379默认没有密码,密码在配置文件requirepass[密码]设置,需要重启生效默认有16个数据(0~15)基础命令命令官网:http://www.redis.cn/commands.html127.0.0.1:6379>ping#测试连通性PONG127.0.0.1:6379>SELECT2#切换数据库OK127.0.0.1:6379[2]>setnameI#设置K-VOK127.0.0.1:6379[2]>getna#K获取V(nil)127.0.0.1:6379[2]>getname"I"127.0.0.1:6379[2]>keys*#获取所有K1)"name"127.0.0.1:6379[2]>dbsize#当前数据库大小(integer)1127.0.0.1:6379[2]>flushdb#清空当前数据库OK127.0.0.1:6379[2]>dbsize(integer)0127.0.0.1:6379[2]>flushall#清空所有数据库OK127.0.0.1:6379>setnamennnOK127.0.0.1:6379>EXISTSname#检查K存在(integer)1127.0.0.1:6379>EXISTSna(integer)0127.0.0.1:6379>EXPIREname5#设置K-V过期时间(秒)(integer)1127.0.0.1:6379>ttlname#查看剩余过期时间(integer)-2#不存在(过期自动删除)127.0.0.1:6379>setnamennnOK127.0.0.1:6379>movename5#移动K-V到5号数据库(integer)1127.0.0.1:6379>setnamennnOK127.0.0.1:6379>typename#检查类型string

2022-1-19 456 0