NoSql之深入浅出redis
一、常用命令1、String类型(1)setkeyvalue nx:如果key不存在则建立 xx:如果key存在则修改其值 (2)getkey:取值 (3)msetkey1value1key2value2一次设置多个值 (4)mgetkey1key2:一次获取多个值 (5)getrangekeystartstop:获取字符串中[start,stop]范围的值 对于字符串的下标,左数从0开始,右数从-1开始 注意:当start>length,则返回空字符串 当stop>=length,则截取至字符串尾 如果start所处位置在stop右边,则返回空字符串 (6)getsetkeynrevalue:获取并返回旧值,在设置新值 (7)incrkey:自增,返回新值, 如果incr一个不是int的value则返回错误, incr一个不存在的key,则设置key为1(8)incrbykey2:跳2自增 (9)strlenkey:取指定key的value值的长度 (10)setexkeytimevalue:设置key对应的值value,并设置有效期为time秒1234567891011121314151617181920212223242526272812345678910111213141516171819202122232425262728 2、List类型(1)lpushkeyvalue:把值插入到链表头部 (2)rpushkeyvalue:把值插入到链表尾部 (3)lpopkey:返回并删除链表头部元素 (4)rpopkey:返回并删除链表尾部元素 (5)lrangekeystartstop:返回链表中[start,stop]中的元素 (6)lremkeycountvalue:从链表中删除value值,删除count的绝对值个value后结束count>0从表头删除count<0从表尾删除count=0全部删除 (7)ltrimkeystartstop:剪切key对应的链接,切[start,stop]一段并把改制重新赋给key(8)lindexkeyindex:返回index索引上的值 (9)llenkey:计算链表的元素个数 (10)linsertkeyafter|beforesearchvalue:在key链表中寻找search,并在search值之前|之后插入value(11)rpoplpushsourcedest:把source的末尾拿出,放到dest头部,并返回单元值1234567891011121314151617181920212223242512345678910111213141516171819202122232425 3、Hash类型 (1)hsetmyhashfieldvalue:设置myhash的field为value (2)hsetnxmyhashfieldvalue:不存在的情况下设置myhash的field为value (3)hmsetmyhashfield1value1field2value2:同时设置多个field (4)hgetmyhashfield:获取指定的hashfield (5)hmgetmyhashfield1field2:一次获取多个field (6)hincrbymyhashfield5:指定的hashfield加上给定的值 (7)hexistsmyhashfield:测试指定的field是否存在 (8)hlenmyhash:返回hash的field数量 (9)hdelmyhashfield:删除指定的field (10)hkeysmyhash:返回hash所有的field (11)hvalsmyhash:返回hash所有的value (12)hgetallmyhash:获取某个hash中全部的field及value123456789101112131415161718192021222324123456789101112131415161718192021222324 4、Set类型 (1)saddkeyvalue1value2:往集合里面添加元素 (2)smemberskey:获取集合所有的元素 (3)sremkeyvalue:删除集合某个元素 (4)spopkey:返回并删除集合中1个随机元素(可以坐抽奖,不会重复抽到某人) (5)srandmemberkey:随机取一个元素 (6)sismemberkeyvalue:判断集合是否有某个值 (7)scardkey:返回集合元素的个数 (8)smovesourcedestvalue:把source的value移动到dest集合中 (9)sinterkey1key2key3:求key1key2key3的交集 (10)sunionkey1key2:求key1key2的并集 (11)sdiffkey1key2:求key1key2的差集 (12)sinterstorereskey1key2:求key1key2的交集并存在res里 123456789101112131415161718192021222324123456789101112131415161718192021222324 5、Zset类型 (1)zaddkeyscore1value1:添加元素 (2)zrangekeystartstop[withscore]:把集合排序后,返回名次[start,stop]的元素 默认是升续排列 withscores是把score也打印出来 (3)zrankkeymember:查询member的排名(升序0名开始) (4)zrangebyscorekeyminmax[withscores]集合(升序)排序后取score在[min,max]内的元素 (5)zrevrankkeymember:查询member排名(降序0名开始) (6)zremrangebyscorekeyminmax:按照score来删除元素,删除score在[min,max]之间 (7)zremkeyvalue1value2:删除集合中的元素 (8)zremrangebyrankkeystartend:按排名删除元素,删除名次在[start,end]之间的 (9)zcardkey:返回集合元素的个数 (10)zcountkeyminmax:返回[min,max]区间内元素数量1234567891011121314151617181920212212345678910111213141516171819202122 二、高级特性1、事务
例子: redis127.0.0.1:6379>multiOKredis127.0.0.1:6379>incraQUEUEDredis127.0.0.1:6379>incrbQUEUEDredis127.0.0.1:6379>exec1.(integer)1 2.(integer)11234567891012345678910 2、持久化
save9001#900秒内如果超过1个key被修改,则发起快照保存save30010#300秒内容如超过10个key被修改,则发起快照保存save6010000123123
appendonlyyes#启用aof持久化方式#appendfsyncalways#每次收到写命令就立即强制写入磁盘,最慢的,但是保证完全的持久化,不推荐使用appendfsynceverysec#每秒钟强制写入磁盘一次,在性能和持久化方面做了很好的折中,推荐#appendfsyncno#完全依赖os,性能最好,持久化没保证1234512345 3、主从复制
原理过程
4、发布订阅
下图展示了频道 channel1 , 以及订阅这个频道的三个客户端 ―― client2 、 client5 和 client1 之间的关系: 当有新消息通过 PUBLISH 命令发送给频道 channel1 时, 这个消息就会被发送给订阅它的三个客户端: 总结:
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |