首页 > 代码库 > redis 2 字符串 和 hash

redis 2 字符串 和 hash

string是最简单的类型,一个key对应一个value,string类型是二进制安全的。redis的string可以包含任何数据,比如JPG图片或者序列化的对象

操作
    set
    设置key对应的值为string类型的value
    例如:
    set name haoxing   //设置key为那么value为haoxiang
    get name   //会得到“haoxiang”    
    注意:
    set 重复添加相同的key名会覆盖原来的值

    setnx
    设置key对应的值为string类型的value,如果key不存在添加,存在返回0
    例如:
    setnx name lamp //就会返回0 如果没有存在这个key 成功返回1
    
    setex
    设置key对应的值为string类型的value,并制定此键值对对应的有效期
    例如:
    setex color 10 red
    get color //十秒内能得到值  返回"red"
    get color //十秒后获取不到  返回(nil) 表示空

    setrange
    替换一个key对应的字符串的部分
    例如:
    set email haoxiang@wolecha.com
    get email //"haoxiang@wolecha.com"
    setrange email 9 163.com
    get email //"haoxiang@163.com.com"
    注意:
    替换是从第9个开始替换你写的新的字符串的长度,如果小于原字符串长度,只替换对应的字节数,并保留后面的内容

    mset
    一次设置多个key的值,成功返回ok 表示所有的值都设置了,失败返回0表示没有任何值被设置
    例如:
    mset key1 haoxiang1 key2 haoxiang2
    注意:
    和set一样有相同的key 会被覆盖

    msetnx
    一次设置多个key的值,成功返回ok表示所有的值都设置了,失败返回0表示没有任何被设置,但不会覆盖已经存在的key,所有的值都不重读才成功
    
    get
    返回key对应的value的值,如果key不存在返回 nil
    例如:
    get name

    getset
    设置key 的值,并返回key对应的value的旧值
    例如:
    set num 20
    get num //"20"
    getset num 30 //"20"
    get num //"30"

    getrange
    获取key的对应value字符串的部分
    例如:
    set eamil haoxiang@163.com
    get email 0 7  //"haoxiang"
    
    mget
    批量获取,如果key不存在返回nil

    incr
    对key对应的value值做加加操作,并返回新的值
    例如:
    set num 30
    incr num //(integer)31

    incrby
    通incr类似,不过是加指定的数值,key 不存在会设置key,并认为原来的值得value是0,正为加,负为减
    例如:
    incrby num 5
    incrby num -5

    decr
    对value值做减减操作

    decrby
    减指定的值,正为减,负为加

    append
    对value值后面追加字符串,返回新的字符串长度

    strlen
    获取key 对应的value的字符串长度

hash类型及操作
redis hash是一个string类型的field和value的映射表。它的添加、删除操作都是0(1)(平均)。hash特别适合用于存储对象。相较于将对象的每个字段存成单个的string类型。将一个对象存储在hash类型中会占用更少的内存,并且可以更方便的存取整个对象。

    hset
    设置hash filed为指定值,如果key不存在,则先创建
    例如
    hset myhash filed1 hello    //其中myhash是hash表的名称,filed1是字段,hello是字段对应的值
    
    hsetnx
    设置hash field为指定值,如果key不存在,则先创建,存在返回0,和setnx 大同小异

    hmset
    批量设置hash的多个字段的值
    例如:
    hmset myhash field1 hello field2 world

    hget
    获取hash中某个字段的值
    例如:
    hget myhash field1

    hmget
    同时获取多个字段的值
    例如:
    hmget myhash field1 field2 field3

    hincrby
    指定的hash field 加上指定的值
    例如:
    hincrby myhash age 8

    hexists
    测试hash表中的字段是否存在,存在返回1,不存在返回0
    例如:
    hexists myhash age

    hlen
    返回hash表中字段的数量
    例如:
    hlen myhash

    hkeys
    返回hash中所有的字段
    例如:
    hkeys myhash

    hvals
    返回hash中的所有value
    例如:
    hvals myhash

    hgetall
    获取hash中全部的字段及对应的value
    例如:
    hgetall myhash

    hdel
    删除hash中的指定字段
    例如:
    hdel myhash age