zoukankan      html  css  js  c++  java
  • Redis value的5种类型及常见操作

    Redis本身存储就是一个hash表,实际实࣫比hash表更复一些,后续讲存储结构时会细讲
    Key只有String类型
    Value包括String ,Set,List,Hash,Zset五中类型

    STRING 可以是字符串,整数或者浮点数以及任何二进制格式的数据 对字符串或一部分进行操作,对整到和浮点数进行自增或自减操作
    LIST 一个链表,链表上的每个字节都包含一个字符串 根据偏移量查找或移除某元素
    SET 包含字符串的无序收集器,并且包含的每个字符串都不重复 添加,获取,移除单个元素,是否存在,计算交集,差集,并集,从集合中取元素
    HASH 包含键值对的无序散列表 添加,获取,删除多个键值对,获取所有键值对
    ZSET 字符集成员member和浮点数分值score之间的有序映射,元素的排列顺序由分值的大小决定 添加获取删除单个元素,根据分值范围或成员来获取元素

    数据基础结构

    string 


    string SET key value [EX seconds] [PX milliseconds] [NX|XX]
    EX代表设置超时时间,单位为秒
    • PX代表设置超时时间,单位为毫秒
    • NX代表只有key不存在才会执行
    • XX代表只有key存在才会更新
    • 如果成功,返回ok,失败返回空(nil)
    Get key 返回key对应的值

    [root@hongquan1 src]# /usr/local/redis/src/redis-cli -h 127.0.0.1 -p 6379
    127.0.0.1:6379> set 123 liubx1122 EX 2 //值存在2秒
    OK
    127.0.0.1:6379> get 123
    (nil)
    127.0.0.1:6379> set 123 liubx1122 EX 20
    OK
    127.0.0.1:6379> get 123
    "liubx1122"
    127.0.0.1:6379> get 123
    "liubx1122"
    127.0.0.1:6379> get 123
    (nil)
    127.0.0.1:6379> set 123 liubx1122 EX 2000
    OK
    127.0.0.1:6379> set 123 liubx3344 NX //不存在就更新
    (nil)
    127.0.0.1:6379> set 999 liubx3344 NX
    OK
    127.0.0.1:6379> get 999
    "liubx3344"
    127.0.0.1:6379> get 123
    "liubx1122"
    127.0.0.1:6379> set 123 99878 XX //存在就更新
    OK
    127.0.0.1:6379> get 123
    "99878"

    MGET key [key ...]
    返回指定的key的所有值,如果key不存在则返回这个key的值为nil
    返回对应key的值列表
    127.0.0.1:6379> mget tt kk fdata1
    1) (nil)
    2) (nil)
    3) (nil)
    127.0.0.1:6379> mget tt kk fdata1 nodata
    1) (nil)
    2) (nil)
    3) (nil)
    4) (nil)

    MSET key value [key value ...]
    设置多个key value,如果某个key以及存在,则用新值覆盖旧值
    • 整个操作是原子操作,要么同时成功,要么同时失败
    • 如果key存在不想覆盖的话,采用MSETNX命令
    • 总是返回ok,此操作不会失败
    MSETNX key value [key value ...]
    与MSET类似,但是如果只要有一个key存在,则表示结果失败
    返回值:1表示设置成功,0表示设置失败
    --append
    如果key已经存在,并且值是string类型,就把新的值追加到原来值的后面
    如果key不存在,就类似set的功能
    返回值的字符长度
    INCR key
    对值进行加一操作,但是只能是值是integer类型才能操作,如果不是就会出错
    最大值为64位有符号值
    返回值为加完的结果--适合做计数器(原子性)
    127.0.0.1:6379> get 888
    (nil)
    127.0.0.1:6379> append 888 apendtest
    (integer) 9
    127.0.0.1:6379> get 888
    "apendtest"
    127.0.0.1:6379> set addt 9.9
    OK
    127.0.0.1:6379> incr addt
    (error) ERR value is not an integer or out of range
    127.0.0.1:6379> set addt1 kkk
    OK
    127.0.0.1:6379> incr addt
    (error) ERR value is not an integer or out of range
    127.0.0.1:6379> set h1 1
    OK
    127.0.0.1:6379> incr h1
    (integer) 2
    127.0.0.1:6379> incr h1
    (integer) 3
    127.0.0.1:6379> get h1
    "3"
    DECR key
    对值进行减一操作,但是Ց能是值是integer类型才能操作,如果Љ是就会出错
    • 如果key不存在,会对此key赋值为0,再做操作
    • 操作能操作的数被限制为64位有符号值
    • 返回操作后的结果值
    DECRBY key decrment
    对值进行减法操作,减去decrement这个值,但是只能是值是integer类型才能操作,如果不是就会出错
    INCRBY key increment
    对值进行加法法操作,加上decrement这个值,但是只能是值是integer类型才能操作,如果不是就会出错

    127.0.0.1:6379> get 111
    (nil)
    127.0.0.1:6379> decr 111
    (integer) -1
    127.0.0.1:6379> decr 111
    (integer) -2
    127.0.0.1:6379> get 111
    "-2"
    127.0.0.1:6379> decrby 111 1
    (integer) -3
    127.0.0.1:6379> decrby 111 -1
    (integer) -2
    127.0.0.1:6379> incrby 111 1
    (integer) -1
    127.0.0.1:6379> incrby 111 0
    (integer) -1
    127.0.0.1:6379> incrby 111 -2
    (integer) -3

    INCRBYFLOAT key increment
    与INCRBY规则一样,但是操作的是浮点数,返回操作后的结果值
    GETSET key value
    原子操作,设置新值的时候,把旧值返回给调用者,如果key已经存在或者key不是String类型就会报错,此命令一般与INCR联合使用
    STRLEN key
    返回key对应的值的长度,如果值不是string类型,就会报错

    127.0.0.1:6379> set fdata 1.5
    OK
    127.0.0.1:6379> incrbyfloat fdata 2.0
    "3.5"
    127.0.0.1:6379> incrbyfloat fdata 1.005
    "4.505"
    127.0.0.1:6379> incrbyfloat fdata 3
    "7.505"
    127.0.0.1:6379> set fdata1 3
    OK
    127.0.0.1:6379> incrbyfloat fdata 1.1
    "8.605"
    127.0.0.1:6379> incr mycounter
    (integer) 1
    127.0.0.1:6379> getset mycounter "0"
    "1"
    127.0.0.1:6379> get mycounter
    "0"
    127.0.0.1:6379> getset mycounter 1
    "0"
    127.0.0.1:6379> get mycounter
    "1"
    127.0.0.1:6379> getset mycounter 11
    "1"
    127.0.0.1:6379> get mycounter
    "11"
    127.0.0.1:6379> sadd sett 1111
    (integer) 1
    127.0.0.1:6379> strlen sett
    (error) WRONGTYPE Operation against a key holding the wrong kind of value
    127.0.0.1:6379> set sett abc
    OK
    127.0.0.1:6379> strlen sett
    (integer) 3

    GETRANGE key start end
    2.0版本前叫做SUBSTR,返回字符串类型值的子串,Start和end的值可以取负数,表示倒数第几个,-1表示最后一个字符
    返回区间字符串
    GETBIT key offset
    可以获得一个字符串类型键指定位置的二进制位的值(0或1),索引从0开始
    SETBIT key offset value
    设置字符串类型键指定位置的二进制位的值,返回值是该位置的旧值
    Bitcount
    可以获得字符串类型键中值是1的二进制位个数

    127.0.0.1:6379> set k1 123456
    OK
    127.0.0.1:6379> get k1
    "123456"
    127.0.0.1:6379> getrange k1 0 3
    "1234"
    127.0.0.1:6379> getrange k1 -3 -1
    "456"
    127.0.0.1:6379> set k2 abcde
    OK
    127.0.0.1:6379> getrange k2 2 3
    "cd"
    127.0.0.1:6379> getbit k2 1
    (integer) 1
    127.0.0.1:6379> getbit k2 3
    (integer) 0
    127.0.0.1:6379> getbit k1 1
    (integer) 0
    127.0.0.1:6379> getbit k1 2
    (integer) 1
    127.0.0.1:6379> setbit k1 2 0
    (integer) 1
    127.0.0.1:6379> getbit k1 2
    (integer) 0
    127.0.0.1:6379> get k1
    "x1123456"
    127.0.0.1:6379> bitcount k1 1
    (error) ERR syntax error
    127.0.0.1:6379> bitcount k1
    (integer) 20
    127.0.0.1:6379> bitcount k2
    (integer) 17

    Lists

    ----评论
    LPUSH key value [value ...]
    把所有的值从list的头部插入,如果key不存在就创建一个空的队列,如果key对值的value不是list类型,则会出现错误
    元素从左到右依次插入,返回list的长度
    LPUSHX key value
    从list头部插入一个值,当key不存在时,不会产生插入动作,返回list的长度
    LPOP key
    移除list的第一个节点,并返回节点数据

    127.0.0.1:6379> lpush list1 11 22 33 55 66 11
    (integer) 6
    127.0.0.1:6379> get list1
    (error) WRONGTYPE Operation against a key holding the wrong kind of value
    127.0.0.1:6379> lpop 3
    (nil)
    127.0.0.1:6379> lpop list1
    "11"
    127.0.0.1:6379> lpop list1
    "66"
    127.0.0.1:6379> lpop list1
    "55"
    127.0.0.1:6379> lpush list2 data1 data2
    (integer) 2
    127.0.0.1:6379> lpush list2 data3
    (integer) 3
    127.0.0.1:6379> lpop list3
    (nil)
    127.0.0.1:6379> lpushx list2 data4
    (integer) 4
    127.0.0.1:6379> lpushx list3 data2
    (integer) 0
    127.0.0.1:6379> lpop list3
    (nil)
    127.0.0.1:6379> lpushx list3 data1
    (integer) 0
    127.0.0.1:6379> lpushx list3 data2
    (integer) 0
    127.0.0.1:6379> lpushx list3 data3
    (integer) 0
    127.0.0.1:6379> lpop list3
    (nil)
    ----
    127.0.0.1:6379> lrange list1 0 10
    1) "33"
    2) "22"
    3) "11"
    127.0.0.1:6379> lpush list1 00
    (integer) 4
    127.0.0.1:6379> lrange list1 0 10
    1) "00"
    2) "33"
    3) "22"
    4) "11"
    127.0.0.1:6379> lpop list1
    "00"
    127.0.0.1:6379> lrange list1 0 10
    1) "33"
    2) "22"
    3) "11"
    ---
    BLPOP key [key ...] timeout
    以阻塞的方式从上key面移除并返回第一个值,只移除和返回第一个非空的key
    Timeout的单位是秒,如果为0,则表示一直阻塞
    只要list的长度为0或者key不存在就会阻塞
    当key是多个时,比如blopo key1 key2,则只要有一个key对应的list不是非空,则不会阻塞
    返回值依次包含key 弹出的值 阻塞的时长,超时时,如果还没有值可以返回,则返回nil
    LLEN key
    返回对应key的list中值的数量,如果key不存在或者list为空,则返回0

    127.0.0.1:6379> lpop list3
    (nil)
    127.0.0.1:6379> blpop list3 10
    (nil)
    (10.09s)
    127.0.0.1:6379> blpop list3 20
    (nil)
    (20.06s)
    127.0.0.1:6379> blpop list1 10
    1) "list1"
    2) "33"
    127.0.0.1:6379> blpop list1 list2 10
    1) "list1"
    2) "22"
    127.0.0.1:6379> blpop list1 list3 10
    1) "list1"
    2) "11"
    127.0.0.1:6379> llen list1
    (integer) 0
    127.0.0.1:6379> llen list2
    (integer) 4

    RPUSH key value [value ...]
    把所有的值从list的尾部插入,如果key不存在就创建一个空的队列
    如果key对应的value不是list类型,则会出现错误
    元素从左到右依次插入,返回list的长度
    RPUSHX key value
    从list尾部插入一个值,当key不存在时,不会产生插入动作,返回list的长度
    RPOP key
    移除list的最后一个节点,并返回节点数据或者nil

    127.0.0.1:6379> rpush l1 1 3 5 7 9
    (integer) 5
    127.0.0.1:6379> rpushx l2 1 2 3
    (error) ERR wrong number of arguments for 'rpushx' command
    127.0.0.1:6379> rpushx l2 1
    (integer) 0
    127.0.0.1:6379> rpop l1
    "9"
    127.0.0.1:6379> rpop l1
    "7"

    BRPOP key [key ...] timeout
    类似于blpop
    RPOPLPUSH source destination
    此操作是一个原子操作
    从source对应的key的list里面的尾部移除一个值,并且加入到destination指定的list的头部
    如果source的list存在在,则返回nil,但是不会做任何操作
    如果source和destination是一样的,则等于把list的尾部数据插入到头部
    返回被弹出和插入的数据
    BRPOPLPUSH source destination timeout
    功能与rpoplpush相似,但是当source为空时,将会进行阻塞

    127.0.0.1:6379> lpush source 11 22 33
    (integer) 3
    127.0.0.1:6379> rpoplpush source dest
    "11"
    127.0.0.1:6379> llen dest
    (integer) 1
    127.0.0.1:6379> lpop dest
    "11"
    127.0.0.1:6379> llen dest
    (integer) 0
    127.0.0.1:6379> rpoplpush dest source
    (nil)

    LINDEX key index
    返回key指定的队列中位置为index的值
    从0开始,负数表示从后面开始算
    LINSERT key BEFORE|AFTER pivot value
    把value的值插入key对应的list中去,位置在pivot这个值的前面(before)或者后面(after)
    如果key不存在,则不会产生任何操作
    如果pivot对应的值不存在则返回-1,否则就返回插入后list的长度
    LRANGE key start stop
    返回一个区间的值,从list的头(左)到尾(右)
    如果start大于list的长度,就会返回空
    如果stop大于list的长度,则以list最后一个值尾准

    127.0.0.1:6379> llen dest
    (integer) 0
    127.0.0.1:6379> lpush dest 11
    (integer) 1
    127.0.0.1:6379> lpush dest 22 33
    (integer) 3
    127.0.0.1:6379> linsert dest before 11 44
    (integer) 4
    127.0.0.1:6379> lrange dest 0 4
    1) "33"
    2) "22"
    3) "44"
    4) "11"
    127.0.0.1:6379> linsert dest before 55 66
    (integer) -1
    127.0.0.1:6379> lrange dest 0 6
    1) "33"
    2) "22"
    3) "44"
    4) "11"

    LREM key count value
    删除值等于value的count个元素
    • 如果count大于0,则从头到尾数
    • 如果count小于0,则从尾到头数
    • 如果count等于0,则删除所有的值等于value的元素
    LTRIM key start stop
    对key指定的list进行裁剪,即取子集
    • 如果start>list的长度或者start>end,将会返回一个空列表,然后导致key被删除
    • 如果end大于list的长度,则取list的长度
    • 执行完成返回ok
    127.0.0.1:6379> rpush mylist "hello"
    (integer) 1
    127.0.0.1:6379> rpush mylist "hello"
    (integer) 2
    127.0.0.1:6379> rpush mylist "foo"
    (integer) 3
    127.0.0.1:6379> rpush mylist "hello"
    (integer) 4
    127.0.0.1:6379> lrem mylist -2 "hello"
    (integer) 2
    127.0.0.1:6379> lrange mylist 0 -1
    1) "hello"
    2) "foo"
    127.0.0.1:6379> lpush dest 11 22 33 44
    (integer) 8
    127.0.0.1:6379> ltrim dest 0 2
    OK
    127.0.0.1:6379> exists dest
    (integer) 1
    127.0.0.1:6379> lrange dest 0 10
    1) "44"
    2) "33"
    3) "22"
    127.0.0.1:6379> llen dest
    (integer) 3
    127.0.0.1:6379> ltrim dest 5 10
    OK
    127.0.0.1:6379> exists dest
    (integer) 0
    127.0.0.1:6379> llen dest
    (integer) 0

    LSET key index value
    修改key对应的list中,位置为index的元素的值为value,当index超过list的返回,将会出现错误
    127.0.0.1:6379> rpush my "one"
    (integer) 1
    127.0.0.1:6379> rpush my "two"
    (integer) 2
    127.0.0.1:6379> rpush my "three"
    (integer) 3
    127.0.0.1:6379> lset my 0 "four"
    OK
    127.0.0.1:6379> lset my -2 "five"
    OK
    127.0.0.1:6379> lrange my 0 -1
    1) "four"
    2) "five"
    3) "three"

    Keys

    DEL key [key ...]
    删除指定的key,如果key不存在,对此key的操作将会忽略,返回被删除的key
    DUMP key
    按照rdb的؂储格式把指定的key的值,序列化并返回给客户端,此序列化值里面不包括ttl信息
    序列化的值中包含校验码,不同版本的rdb实࣫可能؂在差异,所以此处序列化的数据可能不对
    Key不存在就返回nil

    RESTORE key ttl serialized-value [REPLACE]
    把通过dump命令序列化的值再存进去,如果没有带replace,且key已经存在,会出现错误
    会检查校验值ͧchecksumͨ,如果不满足会返回错误,成功返回ok
    EXISTS key [key ...]
    判断key是否存在,如果存在,则返回值加1
    从3.03版本开始支持多个key,以前的版本只支持一个
    如果key重复,则返回值会重复判断和加1
    127.0.0.1:6379> get 123
    "99878"
    127.0.0.1:6379> get 456
    (nil)
    127.0.0.1:6379> exists 123 456
    (integer) 1
    127.0.0.1:6379> exists 123
    (integer) 1
    127.0.0.1:6379> exists 123 123 456
    (integer) 2

    EXPIRE key seconds
    设置key的超时时间,单位是秒ͺ当达到超时时间后,key会被删除
    这个超时时间只能被DEL SET GETSET和*STORE命令修改或者改变,其它命令并不会改变超时设置或者超时时长
    可以通过命令PERSIST把超时设置取消
    当key被RENAME命令修改后,超时设置的特性还是不会改变
    设置成功返回1,key不存在或者超时时间设置失败返回0
    127.0.0.1:6379> set tt data1
    OK
    127.0.0.1:6379> get tt
    "data1"
    127.0.0.1:6379> expire tt 10
    (integer) 1
    127.0.0.1:6379> get tt
    "data1"
    127.0.0.1:6379> get tt
    "data1"
    127.0.0.1:6379> get tt
    (nil)
    127.0.0.1:6379> set tt data1
    OK
    127.0.0.1:6379> expire tt 10
    (integer) 1
    127.0.0.1:6379> set tt data2
    OK
    127.0.0.1:6379> get tt
    "data2"
    127.0.0.1:6379> get tt
    "data2"

    EXPIREAT key timestamp
    设置key的超时时间,与EXPIRE相似,但是设置的是精确时间
    设置成功返回1,key不存在或者超时时间设置失败返回0
    Keys pattern
    返回符合pattern的所有的key,在生产环境尽量少用,除非数据比较少,因为此操作会影响性能
    可以用scan或者sets来达到查找key的业务需求
    • *代表任意؁符,?代表单个؁符,[ae]代码a或者e
    • [^e]代表不等于e,[a-d]代表a,b,c,d
    127.0.0.1:6379> keys [a-d]
    (empty list or set)
    127.0.0.1:6379> keys [d-k]
    (empty list or set)
    127.0.0.1:6379> set a 11
    OK
    127.0.0.1:6379> set b 22
    OK
    127.0.0.1:6379> keys [a-d]
    1) "b"
    2) "a"
    127.0.0.1:6379> set c 33
    OK
    127.0.0.1:6379> set d 44
    OK
    127.0.0.1:6379> keys [a-d]
    1) "b"
    2) "a"
    3) "d"
    4) "c"
    127.0.0.1:6379> keys *
    1) "b"
    2) "h1"
    3) "a"
    4) "d"
    5) "111"

    ttl key
    返回key对应的超时时间,还剩余多少时间
    如果key不存在,返回-2,如果key还没有设置超时时间,返回-1
    pttl key
    与ttl能一致,但是返回的是毫秒
    127.0.0.1:6379> set dd 111 ex 100
    OK
    127.0.0.1:6379> ttl dd
    (integer) 97
    127.0.0.1:6379> pttl dd
    (integer) 90940
    127.0.0.1:6379> ttl dd
    (integer) -2
    127.0.0.1:6379> ttl d
    (integer) -1

    SCAN

    cursor [MATCH pattern] [COUNT count]--类似rdbms的分页查询
    基于游标的方式返回当前数据库的key,因为每次返回的数据不多,不会阻塞服务器,所以可以在生产环境中使用
    Cursor表示的是游标的位置,一般从0开始,返回的数据中第一行代表的就是下一次游标的位置,当返回的下一行游标是
    0时,代表本次迭代全部完成ͺ此游标值不是一个连续标准值,比如5,10,15是连续标准
    MATCH pattern类似keys中模式一样,返回指定模式的迭代游标
    Count代表每次迭ї返回的数据条数,默认是10,但是它只是一个提示,实现时并没有严格保证,实际返回的值可能会
    比这个值多一些,但是不会多太多
    与keys或者SMEMBERS命令相比,scan返回的结果不稳定,在执行迭代的过程中,如果key发生变化,比如删除或者新
    增,则返回的结果可能؂在一下几个问题:
    – 可能会返回重复的key,所以,使用此命令时,业务系统需要判断重复
    – 如果在迭代过程中,有key被删除了,但是在迭ї完成前没有被添加进来,则此key并不会出现在迭代中
    127.0.0.1:6379> scan 0
    1) "22"
    2) 1) "b"
    2) "h1"
    3) "c"
    4) "addt"
    5) "111"
    6) "a"
    7) "dest"
    8) "sett"
    9) "fdata1"
    10) "fdata"
    127.0.0.1:6379> scan 20
    1) "21"
    2) 1) "a"
    2) "dest"
    3) "sett"
    4) "fdata1"
    5) "fdata"
    6) "mycounter"
    7) "list2"
    8) "source"
    9) "my"
    10) "999"
    127.0.0.1:6379> scan 0 match 1*
    1) "22"
    2) 1) "111"
    127.0.0.1:6379> scan 20 match 1*
    1) "21"
    2) (empty list or set)

    hashes

    HSET key field value
    Key带表的是一个hash表,field为hash表的key,value为hash表中key对应的value
    如果key不存在,则创建一个key及对应的hash表
    如果field存在,则把value覆盖原来的值
    如果field是新加入,并且设置成功,则返回1ͺ如果field已经存在,成功更新旧值,则返回0
    HMSET key field value [field value ...]
    与hset类似,但是一次设置多个值,成功返回ok
    127.0.0.1:6379> hmset map1 name libux age 33
    OK
    127.0.0.1:6379> get map1
    (error) WRONGTYPE Operation against a key holding the wrong kind of value
    127.0.0.1:6379> hkeys map1
    1) "name"
    2) "age"
    127.0.0.1:6379> hlen map1
    (integer) 2
    127.0.0.1:6379> hsetnx map1 name libux123
    (integer) 0
    127.0.0.1:6379> hsetnx map1 other nxtest
    (integer) 1
    127.0.0.1:6379> hkeys map1
    1) "name"
    2) "age"
    3) "other"

    HSETNX key field value
    Key代表的是一个hash表,field为hash表的key,value为hash表中key对应的value
    • 当field不存在时才设置
    • 如果field不存在,则设置值,返回1ͺ如果field存在,则返回0,不做任何操作
    HKEYS key
    获取key对应的map的所有key,返回key的列表
    HLEN key
    获取key对应的map的field的数量

    HGET key field
    获取某个field的值,Key代表的是一个hash表,field为hash表的keyͺ如果key不存在或者field不存在,返回nil,否则返回值
    HMGET key field [field ...]
    获取key对应的map的多个值,如果key不存在或者field不存在,返回nil,否则返回值列表
    HVALS key
    返回key对应的map的所有值列表
    HSTRLEN key field
    返回field对应的值的长度,当key不存在或者field不存在,则返回0
    127.0.0.1:6379> hget map1 name
    "libux"
    127.0.0.1:6379> hmget map1 name age
    1) "libux"
    2) "33"
    127.0.0.1:6379> hvals map1
    1) "libux"
    2) "33"
    3) "nxtest"
    127.0.0.1:6379> hlen map1
    (integer) 3

    HDEL key field [field ...]
    删除key对应的map的field,可以原子性操作删除多个field,返回删除的值的数量
    HEXISTS key field
    判断key指定的map中是否存在field属性,如果key不存在或者field不存在则返回0,否则返回1
    HGETALL key
    返回key对应的map的所有key-value对,按照key然后下一行是value的形式展示
    127.0.0.1:6379> hmset map1 del1 del1data del2 deldata2
    OK
    127.0.0.1:6379> hexits map1 del1
    (error) ERR unknown command 'hexits'
    127.0.0.1:6379> hexists map1 del1
    (integer) 1
    127.0.0.1:6379> hexists map1 del3
    (integer) 0
    127.0.0.1:6379> hgetall map1
    1) "name"
    2) "libux"
    3) "age"
    4) "33"
    5) "other"
    6) "nxtest"
    7) "del1"
    8) "del1data"
    9) "del2"
    10) "deldata2"
    127.0.0.1:6379> hdel map1 del2
    (integer) 1
    127.0.0.1:6379> hgetall map1
    1) "name"
    2) "libux"
    3) "age"
    4) "33"
    5) "other"
    6) "nxtest"
    7) "del1"
    8) "del1data"

    HINCRBY key field increment
    对field指定的值加上increment,但是值必只是integer类型,范围在64位有符号的数,返回增加后的结果
    HINCRBYFLOAT key field increment
    对field指定的值加上increment,但是值必只是float类型,范围在64位有符号的数,如果key不存在或者field不存在则返回0,否则返回1
    HSCAN key cursor [MATCH pattern] [COUNT count]
    与scan类似,但是迭代的是key对应的map里面的值
    127.0.0.1:6379> hscan map1 0 count 5
    1) "0"
    2) 1) "name"
    2) "libux"
    3) "age"
    4) "33"
    5) "other"
    6) "nxtest"
    7) "del1"
    8) "del1data"
    127.0.0.1:6379> hincrby map1 age 2
    (integer) 35
    127.0.0.1:6379> hget map1 age
    "35"
    127.0.0.1:6379> hset map1 money 100.1
    (integer) 1
    127.0.0.1:6379> hincrbyfloat map1 money 18.3
    "118.39999999999999999"
    127.0.0.1:6379> hget map1 money
    "118.39999999999999999"
    127.0.0.1:6379> hincrbyfloat map1 money -2.5
    "115.89999999999999999"

  • 相关阅读:
    Markdown快捷笔记
    Linux常用命令
    Git使用
    HTML
    JavaScript-笔记2
    AngularJS-笔记2
    AngularJS-笔记1
    JQuery-笔记
    设置DataGridView的某个单元格为ComboBox
    记录文件浏览历史路径
  • 原文地址:https://www.cnblogs.com/yhq1314/p/10000971.html
Copyright © 2011-2022 走看看