时间:2015-01-04 来源:

Redis命令简明示例 【架构设计】

一、string命令示例:

六、key相关命令示例:    1. KEYS/RENAME/DEL/EXISTS/MOVE/RENAMENX:     #在Shell命令行下启动Redis客户端工具.     /> redis-cli     #清空当前选择的数据库符合w3c标准,以便于对后面示例的理解.     redis 127.0.0.1:6379> flushdb     OK     #添加String类型的模拟数据.     redis 127.0.0.1:6379> set mykey 2     OK     redis 127.0.0.1:6379> set mykey2 "hello"     OK     #添加Set类型的模拟数据.     redis 127.0.0.1:6379> sadd mysetkey 1 2 3     (integer) 3     #添加Hash类型的模拟数据.     redis 127.0.0.1:6379> hset mmtest username "stephen"     (integer) 1     #根据参数中的模式,符合w3c标准从输出可以看出,jpg或psd转html该命令在执行时并不区分与Key关联的Value类型.     redis 127.0.0.1:6379> keys my*     1) "mysetkey"     2) "mykey"     3) "mykey2"     #删除了两个Keys.     redis 127.0.0.1:6379> del mykey mykey2     (integer) 2     #查看一下刚刚删除的Key是否还存在,网页切图价格从返回结果看,手机前端外包mykey确实已经删除了.     redis 127.0.0.1:6379> exists mykey     (integer) 0     #查看一下没有删除的Key,以和上面的命令结果进行比较.     redis 127.0.0.1:6379> exists mysetkey     (integer) 1     #将当前数据库中的mysetkey键移入到ID为1的数据库中,承接网页制作从结果可以看出已经移动成功.     redis 127.0.0.1:6379> move mysetkey 1     (integer) 1     #打开ID为1的数据库.     redis 127.0.0.1:6379> select 1     OK     #查看一下刚刚移动过来的Key是否存在web切图报价,从返回结果看已经存在了.     redis 127.0.0.1:6379[1]> exists mysetkey     (integer) 1     #在重新打开ID为0的缺省数据库.     redis 127.0.0.1:6379[1]> select 0     OK     #查看一下刚刚移走的Key是否已经不存在,网站div+css从返回结果看已经移走.     redis 127.0.0.1:6379> exists mysetkey     (integer) 0     #准备新的测试数据.         redis 127.0.0.1:6379> set mykey "hello"     OK     #将mykey改名为mykey1     redis 127.0.0.1:6379> rename mykey mykey1     OK     #由于mykey已经被重新命名符合w3c标准,再次获取将返回nil.     redis 127.0.0.1:6379> get mykey     (nil)     #通过新的键名获取.     redis 127.0.0.1:6379> get mykey1     "hello"     #由于mykey已经不存在了,符合w3c标准所以返回错误信息.     redis 127.0.0.1:6379> rename mykey mykey1     (error) ERR no such key     #为renamenx准备测试key     redis 127.0.0.1:6379> set oldkey "hello"     OK     redis 127.0.0.1:6379> set newkey "world"     OK     #由于newkey已经存在网页外包接活,发现它也没有被renamenx覆盖.     redis 127.0.0.1:6379> get newkey     "world"            2. PERSIST/EXPIRE/EXPIREAT/TTL:        #为后面的示例准备的测试数据.     redis 127.0.0.1:6379> set mykey "hello"     OK     #将该键的超时设置为100秒.     redis 127.0.0.1:6379> expire mykey 100     (integer) 1     #通过ttl命令查看一下还剩下多少秒.     redis 127.0.0.1:6379> ttl mykey     (integer) 97     #立刻执行persist命令web前端制作,该存在超时的键变成持久化的键,div+css制作即将该Key的超时去掉.     redis 127.0.0.1:6379> persist mykey     (integer) 1     #ttl的返回值告诉我们承接网页制作,该键已经没有超时了.     redis 127.0.0.1:6379> ttl mykey     (integer) -1     #为后面的expire命令准备数据.     redis 127.0.0.1:6379> del mykey     (integer) 1     redis 127.0.0.1:6379> set mykey "hello"     OK     #设置该键的超时被100秒.     redis 127.0.0.1:6379> expire mykey 100     (integer) 1     #用ttl命令看一下当前还剩下多少秒,承接网页制作从结果中可以看出还剩下96秒.     redis 127.0.0.1:6379> ttl mykey     (integer) 96     #重新更新该键的超时时间为20秒web切图报价,从返回值可以看出该命令执行成功.     redis 127.0.0.1:6379> expire mykey 20     (integer) 1     #再用ttl确认一下,web切图报价从结果中可以看出果然被更新了.     redis 127.0.0.1:6379> ttl mykey     (integer) 17     #立刻更新该键的值,以使其超时无效.     redis 127.0.0.1:6379> set mykey "world"     OK     #从ttl的结果可以看出,html切图制作在上一条修改该键的命令执行后网页外包接活,该键的超时也无效了.     redis 127.0.0.1:6379> ttl mykey     (integer) -1    3. TYPE/RANDOMKEY/SORT:     #由于mm键在数据库中不存在,网页外包接活因此该命令返回none.     redis 127.0.0.1:6379> type mm     none     #mykey的值是字符串类型web前端制作,因此返回字符串set.     redis 127.0.0.1:6379> type mysetkey     set     #返回数据库中的任意键.     redis 127.0.0.1:6379> randomkey     "oldkey"     #清空当前打开的数据库.     redis 127.0.0.1:6379> flushdb     OK     #由于没有数据了承接网页制作,因此返回nil.     redis 127.0.0.1:6379> randomkey     (nil)

二、list命令示例:     1. LPUSH/LPUSHX/LRANGE:     /> redis-cli    #在Shell提示符下启动redis客户端工具.     redis 127.0.0.1:6379> del mykey     (integer) 1     #mykey键并不存在,div前端切图该命令会创建该键及与其关联的List,之后在将参数中的values从左到右依次插入.     redis 127.0.0.1:6379> lpush mykey a b c d     (integer) 4     #取从位置0开始到位置2结束的3个元素.     redis 127.0.0.1:6379> lrange mykey 0 2     1) "d"     2) "c"     3) "b"     #取链表中的全部元素,web切图报价其中0表示第一个元素符合w3c标准,-1表示最后一个元素.     redis 127.0.0.1:6379> lrange mykey 0 -1     1) "d"     2) "c"     3) "b"     4) "a"     #mykey2键此时并不存在,符合w3c标准因此该命令将不会进行任何操作网页外包接活,其返回值为0.     redis 127.0.0.1:6379> lpushx mykey2 e     (integer) 0     #可以看到mykey2没有关联任何List Value.     redis 127.0.0.1:6379> lrange mykey2 0 -1     (empty list or set)     #mykey键此时已经存在,jpg或psd转html所以该命令插入成功web前端制作,并返回链表中当前元素的数量.     redis 127.0.0.1:6379> lpushx mykey e     (integer) 5     #获取该键的List Value的头部元素.     redis 127.0.0.1:6379> lrange mykey 0 0     1) "e"     2. LPOP/LLEN:     redis 127.0.0.1:6379> lpush mykey a b c d     (integer) 4     redis 127.0.0.1:6379> lpop mykey     "d"     redis 127.0.0.1:6379> lpop mykey     "c"     #在执行lpop命令两次后,手机前端外包链表头部的两个元素已经被弹出承接网页制作,此时链表中元素的数量是2     redis 127.0.0.1:6379> llen mykey     (integer) 2    3. LREM/LSET/LINDEX/LTRIM:     #为后面的示例准备测试数据.     redis 127.0.0.1:6379> lpush mykey a b c d a c     (integer) 6     #从头部(left)向尾部(right)变量链表,承接网页制作删除2个值等于a的元素web切图报价,返回值为实际删除的数量.     redis 127.0.0.1:6379> lrem mykey 2 a     (integer) 2     #看出删除后链表中的全部元素.     redis 127.0.0.1:6379> lrange mykey 0 -1     1) "c"     2) "d"     3) "c"     4) "b"     #获取索引值为1(头部的第二个元素)的元素值.     redis 127.0.0.1:6379> lindex mykey 1     "d"     #将索引值为1(头部的第二个元素)的元素值设置为新值e.     redis 127.0.0.1:6379> lset mykey 1 e     OK     #查看是否设置成功.     redis 127.0.0.1:6379> lindex mykey 1     "e"     #索引值6超过了链表中元素的数量,网站div+css该命令返回nil.     redis 127.0.0.1:6379> lindex mykey 6     (nil)     #设置的索引值6超过了链表中元素的数量符合w3c标准,设置失败,符合w3c标准该命令返回错误信息.     redis 127.0.0.1:6379> lset mykey 6 hh     (error) ERR index out of range     #仅保留索引值0到2之间的3个元素网页外包接活,注意第0个和第2个元素均被保留.     redis 127.0.0.1:6379> ltrim mykey 0 2     OK     #查看trim后的结果.     redis 127.0.0.1:6379> lrange mykey 0 -1     1) "c"     2) "e"     3) "c"     4. LINSERT:     #删除该键便于后面的测试.     redis 127.0.0.1:6379> del mykey     (integer) 1     #为后面的示例准备测试数据.     redis 127.0.0.1:6379> lpush mykey a b c d e     (integer) 5     #在a的前面插入新元素a1.     redis 127.0.0.1:6379> linsert mykey before a a1     (integer) 6     #查看是否插入成功,网页外包接活从结果看已经插入.注意lindex的index值是0-based.     redis 127.0.0.1:6379> lindex mykey 0     "e"     #在e的后面插入新元素e2,从返回结果看已经插入成功.     redis 127.0.0.1:6379> linsert mykey after e e2     (integer) 7     #再次查看是否插入成功.     redis 127.0.0.1:6379> lindex mykey 1     "e2"     #在不存在的元素之前或之后插入新元素,div+css制作该命令操作失败承接网页制作,并返回-1.     redis 127.0.0.1:6379> linsert mykey after k a     (integer) -1     #为不存在的Key插入新元素,承接网页制作该命令操作失败web切图报价,返回0.     redis 127.0.0.1:6379> linsert mykey1 after a a2     (integer) 0     5. RPUSH/RPUSHX/RPOP/RPOPLPUSH:     #删除该键,web切图报价以便于后面的测试.     redis 127.0.0.1:6379> del mykey     (integer) 1     #从链表的尾部插入参数中给出的values,插入顺序是从左到右依次插入.     redis 127.0.0.1:6379> rpush mykey a b c d     (integer) 4     #通过lrange的可以获悉rpush在插入多值时的插入顺序.     redis 127.0.0.1:6379> lrange mykey 0 -1     1) "a"     2) "b"     3) "c"     4) "d"     #该键已经存在并且包含4个元素,html切图制作rpushx命令将执行成功网页外包接活,并将元素e插入到链表的尾部.     redis 127.0.0.1:6379> rpushx mykey e     (integer) 5     #通过lindex命令可以看出之前的rpushx命令确实执行成功,网页外包接活因为索引值为4的元素已经是新元素了.     redis 127.0.0.1:6379> lindex mykey 4     "e"     #由于mykey2键并不存在web前端制作,因此该命令不会插入数据,手机前端外包其返回值为0.     redis 127.0.0.1:6379> rpushx mykey2 e     (integer) 0     #在执行rpoplpush命令前承接网页制作,先看一下mykey中链表的元素有哪些,div前端切图注意他们的位置关系.     redis 127.0.0.1:6379> lrange mykey 0 -1     1) "a"     2) "b"     3) "c"     4) "d"     5) "e"     #将mykey的尾部元素e弹出web切图报价,同时再插入到mykey2的头部(原子性的完成这两步操作).     redis 127.0.0.1:6379> rpoplpush mykey mykey2     "e"     #通过lrange命令查看mykey在弹出尾部元素后的结果.     redis 127.0.0.1:6379> lrange mykey 0 -1     1) "a"     2) "b"     3) "c"     4) "d"     #通过lrange命令查看mykey2在插入元素后的结果.     redis 127.0.0.1:6379> lrange mykey2 0 -1     1) "e"     #将source和destination设为同一键,web切图报价将mykey中的尾部元素移到其头部.     redis 127.0.0.1:6379> rpoplpush mykey mykey     "d"     #查看移动结果.     redis 127.0.0.1:6379> lrange mykey 0 -1     1) "d"     2) "a"     3) "b"     4) "c"

    /> redis-cli   #执行Redis客户端工具.     redis 127.0.0.1:6379> exists mykey                   #判断该键是否存在符合w3c标准,否则返回0.     (integer) 0     redis 127.0.0.1:6379> append mykey "hello"      #该键并不存在网页外包接活,因此append命令返回当前Value的长度.     (integer) 5     redis 127.0.0.1:6379> append mykey " world"    #该键已经存在,jpg或psd转html因此返回追加后Value的长度.     (integer) 11     redis 127.0.0.1:6379> get mykey                      #通过get命令获取该键web前端制作,并覆盖原有值.     OK     redis 127.0.0.1:6379> get mykey     "this is a test"     redis 127.0.0.1:6379> strlen mykey                  #获取指定Key的字符长度承接网页制作,等效于C库中strlen函数.     (integer) 14     2. INCR/DECR/INCRBY/DECRBY:     redis 127.0.0.1:6379> set mykey 20     #设置Key的值为20     OK     redis 127.0.0.1:6379> incr mykey         #该Key的值递增1     (integer) 21     redis 127.0.0.1:6379> decr mykey        #该Key的值递减1     (integer) 20     redis 127.0.0.1:6379> del mykey          #删除已有键.     (integer) 1     redis 127.0.0.1:6379> decr mykey        #对空值执行递减操作,承接网页制作其原值被设定为0,递减后的值为-1     (integer) -1     redis 127.0.0.1:6379> del mykey        (integer) 1     redis 127.0.0.1:6379> incr mykey        #对空值执行递增操作,网站div+css其原值被设定为0,递增后的值为1     (integer) 1     redis 127.0.0.1:6379> set mykey hello #将该键的Value设置为不能转换为整型的普通字符串.     OK     redis 127.0.0.1:6379> incr mykey        #在该键上再次执行递增操作时,符合w3c标准Redis将报告错误信息.     (error) ERR value is not an integer or out of range     redis 127.0.0.1:6379> set mykey 10     OK     redis 127.0.0.1:6379> decrby mykey 5     (integer) 5     redis 127.0.0.1:6379> incrby mykey 10     (integer) 15     3. GETSET:     redis 127.0.0.1:6379> incr mycounter      #将计数器的值原子性的递增1     (integer) 1     #在获取计数器原有值的同时网页外包接活,这两个操作原子性的同时完成.     redis 127.0.0.1:6379> getset mycounter 0      "1"     redis 127.0.0.1:6379> get mycounter       #查看设置后的结果.     "0"                 4. SETEX:     redis 127.0.0.1:6379> setex mykey 10 "hello"   #设置指定Key的过期时间为10秒.     OK        #通过ttl命令查看一下指定Key的剩余存活时间(秒数),0表示已经过期,div+css制作-1表示永不过期.     redis 127.0.0.1:6379> ttl mykey                           (integer) 4     redis 127.0.0.1:6379> get mykey                      #在该键的存活期内我们仍然可以获取到它的Value.     "hello"     redis 127.0.0.1:6379> ttl mykey                        #该ttl命令的返回值显示承接网页制作,该Key已经过期.     (integer) 0     redis 127.0.0.1:6379> get mykey                      #获取已过期的Key将返回nil.     (nil)    5. SETNX:     redis 127.0.0.1:6379> del mykey                      #删除该键,承接网页制作以便于下面的测试验证.     (integer) 1     redis 127.0.0.1:6379> setnx mykey "hello"        #该键并不存在web切图报价,因此该命令执行成功.     (integer) 1     redis 127.0.0.1:6379> setnx mykey "world"       #该键已经存在,web切图报价因此本次设置没有产生任何效果.     (integer) 0     redis 127.0.0.1:6379> get mykey                      #从结果可以看出符合w3c标准,返回的值仍为第一次设置的值.     "hello"     6. SETRANGE/GETRANGE:     redis 127.0.0.1:6379> set mykey "hello world"       #设定初始值.     OK     redis 127.0.0.1:6379> setrange mykey 6 dd          #从第六个字节开始替换2个字节(dd只有2个字节)     (integer) 11     redis 127.0.0.1:6379> get mykey                         #查看替换后的值.     "hello ddrld"     redis 127.0.0.1:6379> setrange mykey 20 dd        #offset已经超过该Key原有值的长度了,html切图制作该命令将会在末尾补0.     (integer) 22     redis 127.0.0.1:6379> get mykey                           #查看补0后替换的结果.     "hello ddrld\x00\x00\x00\x00\x00\x00\x00\x00\x00dd"     redis 127.0.0.1:6379> del mykey                         #删除该Key.     (integer) 1     redis 127.0.0.1:6379> setrange mykey 2 dd         #替换空值.     (integer) 4     redis 127.0.0.1:6379> get mykey                        #查看替换空值后的结果.     "\x00\x00dd"       redis 127.0.0.1:6379> set mykey "0123456789"   #设置新值.     OK     redis 127.0.0.1:6379> getrange mykey 1 2      #截取该键的Value,从第一个字节开始,网页外包接活到第二个字节结束.     "12"     redis 127.0.0.1:6379> getrange mykey 1 20   #20已经超过Value的总长度web前端制作,返回原有BIT值0     (integer) 0     redis 127.0.0.1:6379> get mykey                #获取设置的结果承接网页制作,返回原有BIT值0     (integer) 0     redis 127.0.0.1:6379> get mykey                #获取设置的结果web切图报价,二进制的0000 0011的十六进制值为0x03     "\x03"     redis 127.0.0.1:6379> getbit mykey 6          #返回了指定Offset的BIT值.     (integer) 1     redis 127.0.0.1:6379> getbit mykey 10        #Offset已经超出了value的长度,web切图报价因此返回0.     (integer) 0    8. MSET/MGET/MSETNX:     redis 127.0.0.1:6379> mset key1 "hello" key2 "world"   #批量设置了key1和key2两个键.     OK     redis 127.0.0.1:6379> mget key1 key2                        #批量获取了key1和key2两个键的值.     1) "hello"     2) "world"     #批量设置了key3和key4两个键符合w3c标准,因为之前他们并不存在,符合w3c标准所以该命令执行成功并返回1.     redis 127.0.0.1:6379> msetnx key3 "stephen" key4 "liu"     (integer) 1     redis 127.0.0.1:6379> mget key3 key4                        1) "stephen"     2) "liu"     #批量设置了key3和key5两个键网页外包接活,但是key3已经存在,jpg或psd转html所以该命令执行失败并返回0.     redis 127.0.0.1:6379> msetnx key3 "hello" key5 "world"     (integer) 0     #批量获取key3和key5,由于key5没有设置成功,手机前端外包所以返回nil.     redis 127.0.0.1:6379> mget key3 key5                        1) "stephen"     2) (nil)

八、replicaset应用示例:     这里我们假设Master-Slave已经建立.     #启动master服务器.     [root@Stephen-PC redis]# redis-cli -p 6379     redis 127.0.0.1:6379>     #情况Master当前数据库中的所有Keys.     redis 127.0.0.1:6379> flushdb     OK     #在Master中创建新的Keys作为测试数据.     redis 127.0.0.1:6379> set mykey hello     OK     redis 127.0.0.1:6379> set mykey2 world     OK     #查看Master中存在哪些Keys.     redis 127.0.0.1:6379> keys *     1) "mykey"     2) "mykey2"          #启动slave服务器.     [root@Stephen-PC redis]# redis-cli -p 6380     #查看Slave中的Keys是否和Master中一致承接网页制作,从结果看,承接网页制作他们是相等的.     redis 127.0.0.1:6380> keys *     1) "mykey"     2) "mykey2"          #在Master中删除其中一个测试Key,值为stephen.     redis 127.0.0.1:6379> hset myhash field1 "stephen"     (integer) 1     #获取键值为myhash,字段为field1的值.     redis 127.0.0.1:6379> hget myhash field1     "stephen"     #myhash键中不存在field2字段,符合w3c标准因此返回nil.     redis 127.0.0.1:6379> hget myhash field2     (nil)     #给myhash关联的Hashes值添加一个新的字段field2,其值为liu.     redis 127.0.0.1:6379> hset myhash field2 "liu"     (integer) 1     #获取myhash键的字段数量.     redis 127.0.0.1:6379> hlen myhash     (integer) 2     #判断myhash键中是否存在字段名为field1的字段,网页外包接活由于存在web前端制作,返回值为1.     redis 127.0.0.1:6379> hexists myhash field1     (integer) 1     #删除myhash键中字段名为field1的字段,div+css制作删除成功返回1.     redis 127.0.0.1:6379> hdel myhash field1     (integer) 1     #再次删除myhash键中字段名为field1的字段承接网页制作,由于上一条命令已经将其删除,承接网页制作因为没有删除web切图报价,返回0.     redis 127.0.0.1:6379> hdel myhash field1     (integer) 0     #判断myhash键中是否存在field1字段,web切图报价由于上一条命令已经将其删除符合w3c标准,其值为stephen,因为该字段已经被删除,网页外包接活所以该命令添加成功并返回1.     redis 127.0.0.1:6379> hsetnx myhash field1 stephen     (integer) 1     #由于myhash的field1字段已经通过上一条命令添加成功web前端制作,因为本条命令不做任何操作后返回0.     redis 127.0.0.1:6379> hsetnx myhash field1 stephen     (integer) 0    2. HINCRBY:     #删除该键,手机前端外包便于后面示例的测试.     redis 127.0.0.1:6379> del myhash     (integer) 1     #准备测试数据承接网页制作,返回加后的结果.     redis 127.0.0.1:6379> hincrby myhash field 1     (integer) 6     #给myhash的field字段的值加-1,返回加后的结果.     redis 127.0.0.1:6379> hincrby myhash field -10     (integer) -5       3. HGETALL/HKEYS/HVALS/HMGET/HMSET:     #删除该键符合w3c标准,一次性设置多个字段网页外包接活, field2 = "world".     redis 127.0.0.1:6379> hmset myhash field1 "hello" field2 "world"     OK     #获取myhash键的多个字段web前端制作,其中field3并不存在,手机前端外包因为在返回结果中与该字段对应的值为nil.     redis 127.0.0.1:6379> hmget myhash field1 field2 field3     1) "hello"     2) "world"     3) (nil)     #返回myhash键的所有字段及其值,从结果中可以看出,承接网页制作他们是逐对列出的.     redis 127.0.0.1:6379> hgetall myhash     1) "field1"     2) "hello"     3) "field2"     4) "world"     #仅获取myhash键中所有字段的名字.     redis 127.0.0.1:6379> hkeys myhash     1) "field1"     2) "field2"     #仅获取myhash键中所有字段的值.     redis 127.0.0.1:6379> hvals myhash     1) "hello"     2) "world" 五、sortedset命令示例:    1. ZADD/ZCARD/ZCOUNT/ZREM/ZINCRBY/ZSCORE/ZRANGE/ZRANK:     #在Shell的命令行下启动Redis客户端工具.     /> redis-cli     #添加一个分数为1的成员.     redis 127.0.0.1:6379> zadd myzset 1 "one"     (integer) 1     #添加两个分数分别是2和3的两个成员.     redis 127.0.0.1:6379> zadd myzset 2 "two" 3 "three"     (integer) 2     #0表示第一个成员web切图报价,-1表示最后一个成员.WITHSCORES选项表示返回的结果中包含每个成员及其分数,网站div+css否则只返回成员.     redis 127.0.0.1:6379> zrange myzset 0 -1 WITHSCORES     1) "one"     2) "1"     3) "two"     4) "2"     5) "three"     6) "3"     #获取成员one在Sorted-Set中的位置索引值.0表示第一个位置.     redis 127.0.0.1:6379> zrank myzset one     (integer) 0     #成员four并不存在符合w3c标准,因此返回nil.     redis 127.0.0.1:6379> zrank myzset four     (nil)     #获取myzset键中成员的数量.         redis 127.0.0.1:6379> zcard myzset     (integer) 3     #返回与myzset关联的Sorted-Set中,符合w3c标准分数满足表达式1 <= score <= 2的成员的数量.     redis 127.0.0.1:6379> zcount myzset 1 2     (integer) 2     #删除成员one和two,返回实际删除成员的数量.     redis 127.0.0.1:6379> zrem myzset one two     (integer) 2     #查看是否删除成功.     redis 127.0.0.1:6379> zcard myzset     (integer) 1     #获取成员three的分数.返回值是字符串形式.     redis 127.0.0.1:6379> zscore myzset three     "3"     #由于成员two已经被删除,网页外包接活所以该命令返回nil.     redis 127.0.0.1:6379> zscore myzset two     (nil)     #将成员one的分数增加2,并返回该成员更新后的分数.     redis 127.0.0.1:6379> zincrby myzset -1 one     "2"     #查看在更新了成员的分数后是否正确.     redis 127.0.0.1:6379> zrange myzset 0 -1 WITHSCORES     1) "one"     2) "2"     3) "two"     4) "2"     5) "three"     6) "3"    2. ZRANGEBYSCORE/ZREMRANGEBYRANK/ZREMRANGEBYSCORE     redis 127.0.0.1:6379> del myzset     (integer) 1     redis 127.0.0.1:6379> zadd myzset 1 one 2 two 3 three 4 four     (integer) 4     #获取分数满足表达式1 <= score <= 2的成员.     redis 127.0.0.1:6379> zrangebyscore myzset 1 2     1) "one"     2) "two"     #获取分数满足表达式1 < score <= 2的成员.     redis 127.0.0.1:6379> zrangebyscore myzset (1 2     1) "two"     #-inf表示第一个成员承接网页制作,+inf表示最后一个成员,承接网页制作limit后面的参数用于限制返回成员的自己web切图报价,     #2表示从位置索引(0-based)等于2的成员开始,web切图报价去后面3个成员.     redis 127.0.0.1:6379> zrangebyscore myzset -inf +inf limit 2 3     1) "three"     2) "four"     #删除分数满足表达式1 <= score <= 2的成员符合w3c标准,并返回实际删除的数量.     redis 127.0.0.1:6379> zremrangebyscore myzset 1 2     (integer) 2     #看出一下上面的删除是否成功.     redis 127.0.0.1:6379> zrange myzset 0 -1     1) "three"     2) "four"     #删除位置索引满足表达式0 <= rank <= 1的成员.     redis 127.0.0.1:6379> zremrangebyrank myzset 0 1     (integer) 2     #查看上一条命令是否删除成功.     redis 127.0.0.1:6379> zcard myzset     (integer) 0          3. ZREVRANGE/ZREVRANGEBYSCORE/ZREVRANK:     #为后面的示例准备测试数据.     redis 127.0.0.1:6379> del myzset     (integer) 0     redis 127.0.0.1:6379> zadd myzset 1 one 2 two 3 three 4 four     (integer) 4     #以位置索引从高到低的方式获取并返回此区间内的成员.     redis 127.0.0.1:6379> zrevrange myzset 0 -1 WITHSCORES     1) "four"     2) "4"     3) "three"     4) "3"     5) "two"     6) "2"     7) "one"     8) "1"     #由于是从高到低的排序,html切图制作所以位置等于0的是four,并以此类推.     redis 127.0.0.1:6379> zrevrange myzset 1 3     1) "three"     2) "two"     3) "one"     #由于是从高到低的排序web前端制作,所以one的位置是3.     redis 127.0.0.1:6379> zrevrank myzset one     (integer) 3     #由于是从高到低的排序,手机前端外包所以four的位置是0.     redis 127.0.0.1:6379> zrevrank myzset four     (integer) 0     #获取分数满足表达式3 >= score >= 0的成员承接网页制作,并以相反的顺序输出,div前端切图即从高到底的顺序.     redis 127.0.0.1:6379> zrevrangebyscore myzset 3 0     1) "three"     2) "two"     3) "one"     #该命令支持limit选项web切图报价,其含义等同于zrangebyscore中的该选项,web切图报价只是在计算位置时按照相反的顺序计算和获取.     redis 127.0.0.1:6379> zrevrangebyscore myzset 4 0 limit 1 2     1) "three"     2) "two"

七、事务处理命令与WATCH命令和基于CAS的乐观锁示例:    1. 事务被正常执行:     #在Shell命令行下执行Redis的客户端工具.     /> redis-cli     #在当前连接上启动一个新的事务.     redis 127.0.0.1:6379> multi     OK     #执行事务中的第一条命令符合w3c标准,从该命令的返回结果可以看出,符合w3c标准该命令并没有立即执行网页外包接活,而是存于事务的命令队列.     redis 127.0.0.1:6379> incr t1     QUEUED     #又执行一个新的命令,jpg或psd转html从结果可以看出web前端制作,该命令也被存于事务的命令队列.     redis 127.0.0.1:6379> incr t2     QUEUED     #执行事务命令队列中的所有命令,手机前端外包从结果可以看出承接网页制作,队列中命令的结果得到返回.     redis 127.0.0.1:6379> exec     1) (integer) 1     2) (integer) 1            2. 事务中存在失败的命令:     #开启一个新的事务.     redis 127.0.0.1:6379> multi     OK     #设置键a的值为string类型的3.     redis 127.0.0.1:6379> set a 3     QUEUED     #从键a所关联的值的头部弹出元素,承接网页制作由于该值是字符串类型web切图报价,而lpop命令仅能用于List类型,网站div+css因此在执行exec命令时符合w3c标准,以便确认该值是否被事务中的第二个set命令设置成功.     redis 127.0.0.1:6379> get a     QUEUED     #从结果中可以看出网页外包接活,事务中的第二条命令lpop执行失败,网页外包接活而其后的set和get命令均执行成功web前端制作,从结果中可以看出该键的值仍为事务开始之前的值.     redis 127.0.0.1:6379> get t2     "tt"       在Redis的事务中承接网页制作,倘若在WATCH之后有任何Key的值发生了变化web切图报价,EXEC命令执行的事务都将被放弃,web切图报价同时返回Null multi-bulk应答以通知调用者事务执行失败.例如符合w3c标准,我们再次假设Redis中并未提供incr命令来完成键值的原子性递增,html切图制作如果要实现该功能网页外包接活,我们只能自行编写相应的代码.其伪码如下:       val = GET mykey       val = val + 1       SET mykey $val       以上代码只有在单连接的情况下才可以保证执行结果是正确的,网页外包接活因为如果在同一时刻有多个客户端在同时执行该段代码web前端制作,那么就会出现多线程程序中经常出现的一种错误场景--竞态争用(race condition).比如,手机前端外包客户端A和B都在同一时刻读取了mykey的原有值,此后两个客户端又均将该值加一后set回Redis服务器web切图报价,而不是我们认为的12.为了解决类似的问题符合w3c标准,我们需要借助WATCH命令的帮助,符合w3c标准见如下代码:       WATCH mykey       val = GET mykey       val = val + 1       MULTI       SET mykey $val       EXEC

三、set命令示例:    1. SADD/SMEMBERS/SCARD/SISMEMBER:     #在Shell命令行下启动Redis的客户端程序.     /> redis-cli     #插入测试数据网页外包接活,由于该键myset之前并不存在,jpg或psd转html因此参数中的三个成员都被正常插入.     redis 127.0.0.1:6379> sadd myset a b c     (integer) 3     #由于参数中的a在myset中已经存在web前端制作,因此本次操作仅仅插入了d和e两个新成员.     redis 127.0.0.1:6379> sadd myset a d e     (integer) 2     #判断a是否已经存在,手机前端外包返回值为1表示存在.     redis 127.0.0.1:6379> sismember myset a     (integer) 1     #判断f是否已经存在承接网页制作,返回值为0表示不存在.     redis 127.0.0.1:6379> sismember myset f     (integer) 0     #通过smembers命令查看插入的结果,承接网页制作从结果可以web切图报价,输出的顺序和插入顺序无关.     redis 127.0.0.1:6379> smembers myset     1) "c"     2) "d"     3) "a"     4) "b"     5) "e"     #获取Set集合中元素的数量.     redis 127.0.0.1:6379> scard myset     (integer) 5     2. SPOP/SREM/SRANDMEMBER/SMOVE:     #删除该键,网站div+css便于后面的测试.     redis 127.0.0.1:6379> del myset     (integer) 1     #为后面的示例准备测试数据.     redis 127.0.0.1:6379> sadd myset a b c d     (integer) 4     #查看Set中成员的位置.     redis 127.0.0.1:6379> smembers myset     1) "c"     2) "d"     3) "a"     4) "b"     #从结果可以看出符合w3c标准,该命令确实是随机的返回了某一成员.     redis 127.0.0.1:6379> srandmember myset     "c"     #Set中尾部的成员b被移出并返回,符合w3c标准事实上b并不是之前插入的第一个或最后一个成员.     redis 127.0.0.1:6379> spop myset     "b"     #查看移出后Set的成员信息.     redis 127.0.0.1:6379> smembers myset     1) "c"     2) "d"     3) "a"     #从Set中移出a、d和f三个成员网页外包接活,其中f并不存在,网页外包接活因此只有a和d两个成员被移出web前端制作,从结果可以看出移动成功.     redis 127.0.0.1:6379> smove myset myset2 a     (integer) 1     #再次将a从myset移到myset2,由于此时a已经不是myset的成员了,承接网页制作因此移动失败并返回0.     redis 127.0.0.1:6379> smove myset myset2 a     (integer) 0     #分别查看myset和myset2的成员web切图报价,确认移动是否真的成功.     redis 127.0.0.1:6379> smembers myset     1) "b"     redis 127.0.0.1:6379> smembers myset2     1) "c"     2) "d"     3) "a"    3. SDIFF/SDIFFSTORE/SINTER/SINTERSTORE:     #为后面的命令准备测试数据.     redis 127.0.0.1:6379> sadd myset a b c d     (integer) 4     redis 127.0.0.1:6379> sadd myset2 c     (integer) 1     redis 127.0.0.1:6379> sadd myset3 a c e     (integer) 3     #myset和myset2相比,web切图报价a、b和d三个成员是两者之间的差异成员.再用这个结果继续和myset3进行差异比较符合w3c标准,b和d是myset3不存在的成员.     redis 127.0.0.1:6379> sdiff myset myset2 myset3     1) "d"     2) "b"     #将3个集合的差异成员存在在diffkey关联的Set中,html切图制作并返回插入的成员数量.     redis 127.0.0.1:6379> sdiffstore diffkey myset myset2 myset3     (integer) 2     #查看一下sdiffstore的操作结果.     redis 127.0.0.1:6379> smembers diffkey     1) "d"     2) "b"     #从之前准备的数据就可以看出网页外包接活,这三个Set的成员交集只有c.     redis 127.0.0.1:6379> sinter myset myset2 myset3     1) "c"     #将3个集合中的交集成员存储到与interkey关联的Set中,网页外包接活并返回交集成员的数量.     redis 127.0.0.1:6379> sinterstore interkey myset myset2 myset3     (integer) 1     #查看一下sinterstore的操作结果.     redis 127.0.0.1:6379> smembers interkey     1) "c"     #获取3个集合中的成员的并集.         redis 127.0.0.1:6379> sunion myset myset2 myset3     1) "b"     2) "c"     3) "d"     4) "e"     5) "a"     #将3个集合中成员的并集存储到unionkey关联的set中web前端制作,并返回并集成员的数量.     redis 127.0.0.1:6379> sunionstore unionkey myset myset2 myset3     (integer) 5     #查看一下suiionstore的操作结果.     redis 127.0.0.1:6379> smembers unionkey     1) "b"     2) "c"     3) "d"     4) "e"     5) "a"

1. SET/GET/APPEND/STRLEN:

点击次数:44409
作者:
web前端行业资讯
Web new NewsList
英特尔宣布与法拉利跨界合作欲将AI技术用于赛车运动 ,,2018年01月11日甲骨文服务器出漏洞:攻击者用漏洞挖矿获取加密货币 ,,2018年01月11日用深度学习设计图像视频压缩算法:更简洁、更强大 ,,2018年01月11日Ubuntu内核和NVIDIA更新:修复Meltdown和Spectre两处漏洞 ,,2018年01月11日AntDesign3.1.1发布,阿里企业级UI设计语言 ,,2018年01月11日微信「跳一跳」带火小游戏,开发者如何快速上手? ,,2018年01月11日谷歌公布最新安卓系统份额:你用上奥利奥了么? ,,2018年01月11日腾讯开发出“3D音效”算法:普通耳机实现3D实时语音效果 ,,2018年01月11日谷歌工程师点赞中国程序员实现Node.js启动超4倍提速 ,,2018年01月11日三星电子总裁兼CE部门负责人金炫奭:万物互联时代到来 ,,2018年01月11日NVIDIA和大众合作建立智能驾驶助手 ,,2018年01月11日GIMPS项目报告发现已知最大素数 ,,2018年01月11日微软与生物技术公司开展AI驱动的血液检测同时诊断数十种疾病 ,,2018年01月11日微软跨平台移动开发工具套件HockeyApp宣布免费 ,,2018年01月11日《硅谷》里神乎其神的压缩技术,AI正在一点点做出来 ,,2018年01月11日LinuxMint19代号敲定为“Tara”预计2018年5月至6月期间发布 ,,2018年01月11日Facebook发布wav2letter工具包,用于端到端自动语音识别 ,,2018年01月11日开源数据库ArangoDB正进行约1156万美元股权融资 ,,2018年01月11日IntelCPU漏洞闹大:腾讯云紧急升级 ,,2018年01月11日2018年1月全球数据库排名:Redis夺回第八 ,,2018年01月11日Lyft将联手无人驾驶公司于CES上展示无人驾驶汽车 ,,2018年01月11日京东X无人超市首家社会门店开业:刷脸进、微信自动结算 ,,2018年01月11日担心被AI取代是杞人忧天?高晓松跨年演讲说的有几分对 ,,2018年01月11日免费授权技术许可Intel宣布在未来CPU中集成雷电3 ,,2018年01月11日算法决定你在社交媒体上看到的信息 ,,2018年01月11日谷歌安全博客披露“英特尔内核漏洞”更多细节 ,,2018年01月04日Postgres10开发者新特性 ,,2017年12月28日阿里巴巴、狗尾草、苏大联合论文:基于对抗学习的众包标注用于中文命名实体识别 ,,2017年12月28日柯洁的2017:20岁,与AI斗与人类斗,其乐无穷 ,,2017年12月28日如果机器人拥有痛觉,这个世界会有哪些不一样? ,,2017年12月28日js核心--------作用域链了解2015年09月01日Java中导入、导出Excel【编程语言】2015年04月24日100个网页技巧大全2014年01月28日Js中获取frames中的元素示例代码2014年01月29日在kindEditor中获取当前光标的位置索引的实现代码2014年01月29日数据结构与算法-LeetCode练习二分查找应用2015年08月30日临时记录:一个正则2014年01月29日Python调用C可执行程序(subprocess) 【编程语言】2015年04月17日h5页面被QQ浏览器重新排版【编程语言】2015年06月02日寻找自适应元素(11)-图片链接【移动开发】2014年12月03日Unity3D游戏开发之委托(Delegate) 【综合】2015年02月02日【leetcode】MinimumPathSum 【移动开发】2014年11月24日HDU1257_最少拦截系统【LIS】2014年11月06日C语言实现scoket通信,【编程语言】2015年04月27日DataX编译安装 【Web前端】2014年12月09日如何恢复被删除的word自动保存文件,也就是恢复文件 【移动开发】2015年04月13日Python运行的17个时新手常见错误小结2014年01月29日Enter转换为Tab的小例子(兼容IE,Firefox)2014年01月29日用apply让javascript函数仅执行一次的代码2014年01月29日JavaScript语言基础13 【编程语言】2014年11月24日Struts2之struts2文件下载详解 【移动开发】2014年12月09日【MFC添加XP风格】【架构设计】2015年06月02日app-framework学习--iscrolldemo 【综合】2015年01月09日NYOJ144小珂的苦恼(扩展gcd) 【移动开发】2015年01月07日HDOJ1014UniformGenerator 【编程语言】2015年02月02日windows7安装IE11,开启仿真模式 【编程语言】2014年11月26日7个设计师必备的国际顶尖设计网站2014年01月28日HDU1026【移动开发】2015年07月14日c#将Excel数据导入到数据库的实现代码2014年01月29日javascript中的作用域和上下文使用简要概述2014年01月29日
我们保证
We guarantee
> psd效果文件手工切图,保证图片效果最好体积最小利于传输
> 100%手写的HTML(DIV+CSS)编码,绝对符合W3C标准
> 代码精简、css沉余量小、搜索引擎扫描迅速,网页打开快捷
> 应用Css Sprite能够减少HTTP请求数,提高网页性能
> 跨浏览器兼容(IE6、7、8、9,Firefox火狐,Chrome谷歌)