Redis的key关键字和五种常用数据类型:String、List、Hash、Set、Zset及其示例演示

1、key关键字

1、set/get/keys/del
    set u1 zhang3    #####添加数据
    get u1    #####获取数据
    exists u1    #####获取数据
    del u1    #####删除数据
    keys *    #####获取所有数据


2、expire/ttl/type
    expire u1 10    #####设置过期时间10秒
    ttl u1    #####查看过期时间还剩多少秒
            ####-2表示已过期,-1表示永不过期
    type u1    #####查看u1对于value的数据类型


3、select/move/flushdb/flushall
    注:
        redis安装默认有16个库,标号0-15,可以使用select切换

    select 7    #####切换到第8个库
    move u2 0    #####将当前库的u2移动到第1个库中
    flushdb    #####删除当前数据库的内容
    flushall    #####删除所有16个数据块的内容
    
  

注:
    在redis中1代表命令执行成功,0代表执行失败  

2、String类型

1、set/get/del/append/strlen
    set k1 v1    #####设置数据
    get k1    #####获取数据
    del k1    #####删除数据
    append    k1    "要追加的内容"    #####在某个key的尾部追加内容
    strlen k1    #####返回key的内容的长度

2、incr/decr/incrby/decrby/incrbyfloat/decrbyfloat
    注:
        必须是数字
    incr k1    #####k1的内容加1
    decr k1    #####k1的内容减1
    incrby k1 2    #####k1的内容加2
    decrby k1 2    #####k1的内容减2
    incrbyfloat k1 0.5    #####k1的内容加0.5
    decrbyfloat k1 0.5    #####k1的内容减0.5

3、setrange/getrange
    setrange k1 1 x    #####在k1的下标1前添加内容x,由于长度不变,尾部元素溢出删除
    getrange k1 0 -1    #####获取所有元素,前一个为起始下标,后一个为结束下标

4、setex/setnx
    setex k1 10 v1    #####建立k1-v1键值时设置10秒过期
    setnx k1 10 v1    #####建立k1-v1键值时设置10秒过期(只有k1不存在才会执行成功)

5、mset/mget/msetnx
    mset k1 v1 k2 v2....    #####设置数据,两个全成功才成功
    mget k1 k2.....    #####获取数据
    msetnx k1 v1 k2 v2    #####设置数据,两个全成功才成功(只有k1、k2不存在才会执行成功)


总结:
    redis中最基本的数据类型,相当于java中的Map<String,Object>。
    String类型是二进制安全的,这意味着String可以包含任何数据,一个序列化对象,一张图片,甚至一部电影。
    String类型的value顶多512MB。
    

3、List列表类型(相当于一个key对应多个value)

1、lpush/rpush/lrange
    lpush list01 1 2 3 4 5    #####1-5逐个从左边进入
    rpush list02 1 2 3 4 5    #####1-5逐个从右边进入
        #####可以用来给存在的列表中添加数据
    
    lrange list01 0 -1    #####自上而下显示5 4 3 2 1
    lrange list02 0 -1    #####自上而下显示1 2 3 4 5

2、lpop/rpop/rpoplpush
    lpop list01    #####从list01中弹出5
    rpop list01    #####从list01中弹出1

    rpoplpush list01 list02
        #####弹出list01中的最右元素,放到list02的最左边

    注:
        弹出后该元素不存在list集合中

3、lindex/llen
    lindex list01 2    #####返回2的索引,从左边开始数
    llen list01    #####返回集合的长度

4、lrem/ltrim/lset/linsert
    lrem list01 1 2    #####从list01中删除1个2,从左往右遍历
    ltrim list01 1 3    #####将list01中索引介于1-3的子串截取赋给list01,从左往右遍历
    lset list01 1 007    #####将list01中索引为1的内容替换成007,从左往右遍历
    linsert list01 before 1 7    #####在list01元素1前插入元素7,从左往右遍历
    linsert list01 after 1 7    #####在list01元素1后插入元素7,从左往右遍历


总结:
    底层是双向循环链表。
    字符串链表,按照插入顺序排序。
    值全部移除,集合消失。
    头尾操作效率几极高,中间效率一般。
    
    

4、Set集合类型(相当于一个key对应多个value)

1、sadd/smembers/sismember
    sadd set01 1 1 2 2 3 3    #####只会添加1 2 3 ,重复元素不添加。
        #####sadd也可以用来往以存在的set集合中添加元素
    smembers set01    #####查看set01的元素
    sismember set01 1    #####查看1是否是set01的元素。是返回1,不是返回0

2、scard/srem/srandmember/spop
    scard set01    ####返回set01元素个数
    srem set01 1    #####从set01中删除元素1
    srandmember set01 3    #####从set01中随机出3个元素,不移除
    spop set01    #####从set01中随机出1个元素,移除

3、smove
    smove set01 set02 1
        #####将sey01中的1剪切到set02中,set02不存在会创建

4、差集sdiff/交集sinter/并集sunion
    sdiff set01 set02    #####前一个减后一个
    sinter set01 set02    #####返回两个相同的元素
    sunion set01 set02    #####范湖两个集合中所有元素


总结:
    无序集合,底层是hadhtable。

5、Hash(key-value形式不变,只是value是一个键值对)

非常重要,十分重要,极其重要

1、hset/hget/hmset/hmget/hgetall/hdel(重要)
    hset user u1 zhang3    #####设置数据
    hget user u1    #####取数据
    hmset user u1 zhang3 u2 li4.....    #####设置多个数据
    hmget user u1 u2.....    #####获取多个数据
    hgetall user    #####获取所有数据
    hdel user u1    #####删除user中的u1-zhang3键值对

2、hlen/hexists
    hlen user    #####返回内部键值对个数
    hexists user u1    #####判断user中是否有u1的键值对

3、hkeys/hvals(重要)
    hkeys user    #####返回所有key
    hvals user    #####范湖所有value

4、hincrby/hincrbyfloat    #####value必须是数值类型
    hincrby user u1 2    #####给u1对应value加2
    hincrbyfloat user u1 2.3    #####给u1对应value加2.3

5、hsetnx
    hsetnx user u3 wang5    #####如果不存在,则添加

    

6、Zset集合(Sorted set 有序集合)

Zset:
    和set一样,是String类型的集合,不允许重复。
    每个元素都会关联一个double类型的分数,证实通过这个分数对集合中的元素进行从小到大的排序。
    元素唯一,分数可以重复。
    set: sadd user v1 v2 v3
    zset: zadd user 60 v1 70 v2 80 v3

1、zadd/zrange/zrangebyscore/zrevrange
    zadd zset01 60 v1 70 v2.....    #####添加数据
    zrange zset01 0 -1    #####查看数据
    zrange zset01 0 -1 withscores    #####查看数据带分数

    zrangebyscore zset01 60 90    ######查看分数介于[60,90]之间数据
    zrangebyscore zset01 60 (90    ######查看分数介于[60,90)之间数据
    zrangebyscore zset01 (60 90    ######查看分数介于(60,90]之间数据
    zrangebyscore zset01 60 90 limit 1 2
        #####先查看分数介于[60,90]之间数据,再在结果数据中的从索引1开始取两个数


2、zrem/zcard/zcount/zrank/zscore/zrevrank
    zrem zset01 v1    #####删除v1
    zcard zset01    #####统计个数
    zcount zset01 60 90 #####统计[60,90]之间的value个数
    zrank zset01 v4    #####获取下标
    zrevrank zset01 v4    #####获取下标,从右表开始

3、zrevrange/zrevrangebyscore
    zrevrange user 0 -1     #####倒序输出
    zrevrangebyscore user 90 60     #####倒序输出[60,90]之间的数据

    
    
    

猜你喜欢

转载自blog.csdn.net/pengzonglu7292/article/details/89378768
今日推荐