Redis学习(一.redis中的数据结构)

一.String类型:

        字符串类型,一个key对应一个value。

        常用命令:

        set添加 set name xiaoduanyu  (set key value)
        get获取 get name (get key)
        del删除 del name (del key)
        incr强转integer 再加1 (set age 22,incr age) 结果返回为23
        decr强转integer 再减1 (decr age) 结果返回为22

二.Hash类型:

        哈希表类型,一个key对应多个键值对。

        常用命令:

hset:hash表中添加:(hset key field value) 
                    hset user name xiaoduanyu
                    hset user age 22
                    hset user sex nan
                    hset user email 1543002286@qq.com
hget:获取hash表中的信息:(hget key field)
                    hget user name 返回结果:xiaoduanyu
                    hget user age 返回结果:22
                    hget user sex 返回结果:nan
                    hget user email 返回结果:1543002286@qq.com
hdel:删除hash表中的一个value:(hdel key field)
                    hset user test 111
                    hdel user test  返回结果:1

hgetall:获取所有的hash表中的值:(hgetall key)
                    hgetall user
                    返回结果:
                        1) "name"
                        2) "xiaoduanyu"
                        3) "age"
                        4) "22"
                        5) "sex"
                        6) "nan"
                        7) "email"
                        8) "1543002286@qq.com"

三.Set类型:

        无序不重复集合类型:(底层为hashtable和intset(整数集合))

        常用命令:

Sadd : 向set中添加元素(sadd key member)
                Sadd class xiaoduanyu xiaoxuan zhangsiqi xiaoxuan
                返回结果:xiaoduanyu,xiaoxuan,zhangsiqi
                相同的元素只会添加一次


Spop :随机移除Set中的一个值(Spop key)
                Spop class
                返回结果:随机移除的一个Set中的元素。


Smove :移除set中的一个元素,并将它添加到另一个集合中(Smove source destination member)
                Sadd class xiaoxuan removeClass member
                返回结果 1,
                Smembers removeClass : 返回结果xiaoxuan


Sismember:检查元素是否存在set集合中(Sismember key member)存在返回1,不存在返回0
                Sismember class ok
                返回结果 0 


Scard : Scard class 返回set中包含元素的数量 (Scard key)
                Scard class
                返回结果:2


Smembers : 返回集合中包含的元素 (Smembers key)
                Smembers class
                返回结果:由于刚刚Spop是随机删除的元素,所以这个返回结果可能和我的结果不一样
                1) "xiaoxuan"
                2) "xiaoduanyu"


Srandmember : 随机返回一个或多和元素当count为正返回元素不重复,count为负可以重复(Srandmember key [count])
                Sadd class xiaoduanyu1 xiaoduanyu2 xiaoduanyu3 xiaoduanyu4
                Srandmember class 4
                返回结果:
                    1) "xiaoxuan"
                    2) "xiaoduanyu2"
                    3) "xiaoduanyu3"
                    4) "xiaoduanyu4"
                Srandmember class -4
                返回结果:
                    1) "xiaoxuan"
                    2) "xiaoduanyu2"
                    3) "xiaoduanyu3"
                    4) "xiaoduanyu3"


Sdiff : 返回那些存在于第一个集合、但不存在于其他集合中的元素(数学上的差集运算)Sdiff key [key]
                首先我们先创建一个新的set
                Sadd class2 xiaoduanyu xiaoduanyu1 xiaoduanyu5
                Sdiff class class2
                返回结果:
                    1) "xiaoduanyu3"
                    2) "xiaoduanyu2"
                    3) "xiaoduanyu4"
                    4) "xiaoxuan"
                由于class中也包含xiaoduanyu1所以返回结果中做了差,所以返回结果就没有xiaoduanyu1了


Sdiffstore : 将第一个set中存在,后面set中不存在的元素写入一个新的set中(Sdiffstore destination key [key])
                Sdiffstore sidffclass class class2
                返回结果:
                    4
                Smembers sidffclass
                返回结果:
                    1) "xiaoduanyu3"
                    2) "xiaoduanyu2"
                    3) "xiaoduanyu4"
                    4) "xiaoxuan"


Sinter : 返回那些同时存在于所有集合中的元素(数学上的交集运算)(Sinter key [key])
                Sinter class class2
                返回结果:
                    1) "xiaoduanyu1"
                    2) "xiaoduanyu"    

四.Zset类型:

        zset是一个有序无重复的字符串集合

Zadd : 添加多个元素到有序集合中(zadd key [NX|XX] [CH] [INCR] score member [score member ...])
                zadd class3 1 xiaoduanyu1 2 xiaoduanyu2 3 xiaoduanyu3
                返回结果:
                    3
                前面的数字是它的scor 每一个成员都关联了一个评分(score) ,这个评分被用来按照最低分到最高分的方式排序集合中的成员,
                集合的成员是唯一的,但是评分可以重复
            
Zrem: 移除命令。(zrem key member [member ...])
                首先添加一条元素:zadd class3 10 xiaoduanyu10
                然后移除该元素:
                    zrem class3 xiaoduanyu10
                    返回结果1
                    再查询一遍:zrange class3 0 -1 withscores
                        1) "xiaoduanyu1"
                        2) "1"
                        3) "xiaoduanyu2"
                        4) "2"
                        5) "xiaoduanyu3"
                        6) "3"
            
Zcard : 返回key的成员个数。key不存在时,返回0(zcard key)
                zcard class3
                返回结果3
                
 Zcount : 返回分数在 min max之间的元素个数()
                zcount class3 2 3
                返回结果2
                
                
  Zrange : 获取key的所有值,按照评分从小到大排序 加上withscores则查询结果带评分
                zrange class3 0 -1
                返回结果:
                    1) "xiaoduanyu1"
                    2) "xiaoduanyu2"
                    3) "xiaoduanyu3"
                zrange class3 0 -1 withscores
                返回结果会包含score的值:
                    1) "xiaoduanyu1"
                    2) "1"
                    3) "xiaoduanyu2"
                    4) "2"
                    5) "xiaoduanyu3"
                    6) "3"
            
Zrevrange : 和zrange类似只不过是按分数从大到小 ( Zrevrange key start stop [WITHSCORES])
                zrevrange class3 0 -1
                1) "xiaoduanyu3"
                2) "xiaoduanyu2"
                3) "xiaoduanyu1"
                
            
Zrangebyscore : 将评分范围内的元素取出。(zrangebyscore key min max [WITHSCORES] [LIMIT offset count])
                zrangebyscore class3 2 3 withscores
                返回结果:
                    1) "xiaoduanyu2"
                    2) "2"
                    3) "xiaoduanyu3"
                    4) "3"
            
Zrevrangebyscore : 按照排序从大到小取出元素(zrevrangebyscore key max min [WITHSCORES] [LIMIT offset count])
                zrevrangebyscore class3 3 2 withscores
                返回结果:
                    1) "xiaoduanyu3"
                    2) "3"
                    3) "xiaoduanyu2"
                    4) "2"
            
Zrank : 返回指定key的成员排名,按照分数从小到大排列(zrank key member)
                zrank class3 xiaoduanyu2
                返回结果:
                0
            
Zrevrank : 与 ZRANK 的用法相同,区别就是按照分数 从大到小排列
                zrevrank class3 xiaoduanyu2
                返回结果 2
            
Zincrby : (zincrby key increment member)
            为指定 key 的 member 的分数值 加 increment,其中 increment 代表数值,increment 可以是 负数,代表减去。
                zincrby class3 2 xiaoduanyu1
                返回结果:
                3
                再查询一遍zset:zrange class3 0 -1 withscores
                    1) "xiaoduanyu2"
                    2) "2"
                    3) "xiaoduanyu1"
                    4) "3"
                    5) "xiaoduanyu3"
                    6) "3"
            
ZREMRANGEBYRANK : 移除指定key排名介于start 和stop 之间的元素(不是score)
                ZREMRANGEBYRANK key start stop
                首先添加一些数据:
                zadd class3 20  xiaoduanyu20 21 xiaoduanyu21 26 xiaoduanyu26
                查询一遍:
                zrange class3 0 -1 withscores:
                返回结果:
                     1) "xiaoduanyu2"
                     2) "2"
                     3) "xiaoduanyu1"
                     4) "3"
                     5) "xiaoduanyu3"
                     6) "3"
                     7) "xiaoduanyu20"
                     8) "20"
                     9) "xiaoduanyu21"
                    10) "21"
                    11) "xiaoduanyu26"
                    12) "26"
                现在我们进行操作:ZREMRANGEBYRANK class3 3 5
                返回结果:
                    3
                再查询一遍:
                    1) "xiaoduanyu2"
                    2) "2"
                    3) "xiaoduanyu1"
                    4) "3"
                    5) "xiaoduanyu3"
                    6) "3"
            
 ZREMRANGEBYSCORE  : 移除指定key的 分数介于 min 和 max 之间的成员
                ZREMRANGEBYSCORE key min max
                首先添加一些数据:zadd class3 20  xiaoduanyu20 21 xiaoduanyu21 26 xiaoduanyu26
                然后查询一遍:zrange class3 0 -1 withscores:
                返回结果:
                     1) "xiaoduanyu2"
                     2) "2"
                     3) "xiaoduanyu1"
                     4) "3"
                     5) "xiaoduanyu3"
                     6) "3"
                     7) "xiaoduanyu20"
                     8) "20"
                     9) "xiaoduanyu21"
                    10) "21"
                    11) "xiaoduanyu26"
                    12) "26"
                现在我们进行操作 ZREMRANGEBYSCORE class3 20 26
                返回结果
                    3
                再查询一遍:
                    1) "xiaoduanyu2"
                    2) "2"
                    3) "xiaoduanyu1"
                    4) "3"
                    5) "xiaoduanyu3"
                    6) "3"
            
ZINTERSTORE : ZINTERSTORE destination numkeys key [key ...] [WEIGHTS weight] [AGGREGATE SUM|MIN|MAX]
                destination 给定的一个新的集合
                numkeys 计算的几个集合
                之后的就是集合到的key了
                首先我们添加一些数据:
                zadd math 80 xiaoxuan 70 zhangsiqi
                zadd chinese 65 xiaoxuan 75 zhangsiqi
                然后:zinterstore total 2 math chinese
                查询total:zrange total 0 -1 withscores
                返回结果:
                    1) "xiaoxuan"
                    2) "145"
                    3) "zhangsiqi"
                    4) "145"
                    
ZUNIONSTORE : zunionstore destination numkeys key [key ...] [WEIGHTS weight] [AGGREGATE SUM|MIN|MAX]
                和上面类似,去并集,但是有一个算法因子 WEIGHTS 2 2就是两个集合的元素都乘 2倍
                添加点数据:
                zadd english 60 xiaoxuan 70 zhangsiqi
                zadd english2 80 laiyuanjie 100 fengyingjun
                然后:zunionstore total2 2 english english weights 2 2
                查询total2:zrange total2 0 -1 withscores
                返回结果:
                    1) "xiaoxuan"
                    2) "120"
                    3) "zhangsiqi"
                    4) "140"
                    5) "laiyuanjie"
                    6) "160"
                    7) "fengyingjun"
                    8) "200"

五.List类型:

        列表类型,一个key对应一个链表(双端链表,有序,value可重复,可以通过下标取出对应值)

        底层实现:3.2之前的版本是使用ziplist和linkedlist进行实现的。在3.2之后的版本就是引入了quicklist

常用命令:

lpush : 左边插入(lpush key value [value ...])
    lpush test 1 2 3 4 5 6 7

lrange:获取列表指定范围的元素,lrange key 0 -1:stop=-1代表取出列表中所有元素
    (lrange key start stop)
    查询一下test:lrange test 0 -1
    返回结果:
        1) "7"
        2) "6"
        3) "5"
        4) "4"
        5) "3"
        6) "2"
        7) "1"
rpush : 右边插入
    (rpush key value [value ...])
    rpush test A
    查询一下:lrange test 0 -1
    返回结果:
        1) "7"
        2) "6"
        3) "5"
        4) "4"
        5) "3"
        6) "2"
        7) "1"
        8) "A"
    
lpop : 从左边取出一个元素并删除    (lpop key)
    lpop test
    返回 7
    查询一下:lrange test 0 -1
    返回结果:
        1) "6"
        2) "5"
        3) "4"
        4) "3"
        5) "2"
        6) "1"
        7) "A"
        
lindex : 通过索引获取列表中的元素(lindex key index)不会删除元素
    lindex test 0
    返回 6
    查询一下:lrange test 0 -1
    返回结果:
        1) "6"
        2) "5"
        3) "4"
        4) "3"
        5) "2"
        6) "1"
        7) "A"
    
llen : 获取列表的长度 
    llen test
    返回7

lrem : 移除多少个列表元素(lrem key count value)
    lrem test 1 A
    返回1
    查询一下:lrange test 0 -1
    返回结果:
        1) "6"
        2) "5"
        3) "4"
        4) "3"
        5) "2"
        6) "1"

rpoplpush : 从列表中弹出一个值,将弹出的元素插入到另外一个列表中并返回它;
        如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。            
    (rpoplpush source destination)
    rpoplpush test test1
    返回1
    查询一下:lrange test 0 -1  
    返回结果:
        1) "6"
        2) "5"
        3) "4"
        4) "3"
        5) "2"
    查询一下:lrange test1 0 -1
    返回结果:
        1) "1"
            

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值