• Redis数据类型、两种模型、事务、内部命令


    1.redis数据类型

    a.字符串,使用场景:常规key-value缓存应用

    set name lixiang
    get name
    append name 123  # 字符串追加
    mset key value [key value ...]  # 设置多个键值对
    mset name1 zhangsan name2 lisi
    mget name1 name2  # 获取多个键的值
    strlen name1  # 返回字符串长度
    (integer) 8
    set age 24
    incr age  # 每次加1
    (integer) 25
    decr age  # 每次减1
    exists key [key ...]  # 检测某个键是否存在
    incrby age 20  # 指定增加量
    del name1  # 删除某个键
    

    b.hash,使用场景:存储部分变更的数据,如用户信息等

    hash是一个string类型的field和value的映射表,hash特别适合用于存储对象
    hset user1 name "Tom"
    hset user1 age 25
    hset user1 career "Programmer"
    hget user1 name
    hgetall user1   # 返回key的所有键值
    hdel user1 name # 删除其中某个字段
    hdelall user1  # 删除user1
    

    c.list,Redis列表是简单的字符串列表

    lpush list1 bmw benz toyota wuling  # 将一个或多个值插入到列表头部
    lrange list1 0 3    # 返回指定的元素
    rpush list1 biyadi  # 将一个或多个值插入到列表尾部
    rpop list1  # 删除列表末尾的元素
    llen list1  # 返回列表长度
    lrem list1 2 baozi1   # 删除前两个baozi1 
    lrem list1 -1 baozi1  # 删除最后一个baozi1 
    lrem list1 0 baozi1   # 删除所有baozi1
    lindex list1 2  # lindex key index返回下标为index的元素
    lset list1 2 TOYOTA   # lset key index value
    linsert list1 before benz dazhong # linsert key BEFORE|AFTER pivot value
    

      生产者、消费者模型--用rpush生产,放到列表尾部,用lpop消费,从列表头部取出元素,跟队列是一样的,先进先出;栈:后进先出(电梯)、先进后出.

    d.set

    set是string类型的无序集合.注意集合和列表的区别:
    集合中的元素是无序的,因此不能通过索引来操作元素;
    集合中的元素不能有重复.
    SADD numbers 1 3 5  # sadd key member [ member .... ]
    smembers numbers    # smembers key返回集合中的所有元素
    srem numbers 5      # srem key member
    sismember key member# 判断元素是否在集合中
    scard key  # 获得集合中元素的个数
    

    e.sorted set有序集合对象

    zadd 命令用来向有序集合中加入一个元素和该元素的分数,如果该元素已经存在,则会用新的分数替换原有的分数

    zadd key score member [ score member ...... ]
    ZADD price 8.5 apple 5.0 banana 6.0 cherry
    zscore key member  # 获得元素的分数
    zrange key start stop [ withscores ]  # 获得排名在某个范围的元素列表
    zrevrange key start stop [ withscores ]
    zrange price 0 -1
    

    2.两种模型

    a.生产者、消费者模型
    b.发布订阅模型
    # 两个不同的终端,分别连上redis
    10.0.0.15:6379> publish mq1 "redis is a great cached technique"
    (integer) 1
    
    10.0.0.15:6379> subscribe mq1
    Reading messages... (press Ctrl-C to quit)
    1) "subscribe"
    2) "mq1"
    3) (integer) 1
    1) "message"
    2) "mq1"
    3) "redis is a great cached technique"
    

    3.事务

    10.0.0.15:6379> zadd money 3000 lixiang 6000 oldboy
    (integer) 2
    10.0.0.15:6379> multi
    OK
    10.0.0.15:6379> zincrby money 1000 lixiang
    QUEUED
    10.0.0.15:6379> zincrby money -1000 oldboy
    QUEUED
    10.0.0.15:6379> exec
    1) "4000"
    2) "5000"
    10.0.0.15:6379> zrange money 0 -1 withscores
    multi:标记一个事务块的开始;
    exec:执行所有事务块内的命令;
    discard:取消事务,放弃执行事务块内的所有命令;
    watch:监视一个(或多个)key,如果在事务执行之前这个(或这些)key被其他命令所改动,那么事务将被打断;
    unwatch:取消watch命令对所有 key 的监视.
    Redis的事务中,启用的是乐观锁,只负责监测key没有被改动.
    

    4.内部命令

    INFO [section]:获取Redis服务器的各种信息和统计数值;
    CONFIG SET parameter value:修改redis配置参数,无需重启;
    MONITOR:实时打印出Redis服务器接收到的命令,调试用;
    DBSIZE:返回当前数据库的key的数量;
    FLUSHALL:删除所有数据库的所有key;
    FLUSHDB:删除当前数据库的所有key;
    
    CLUSTER SLOTS:获取集群节点的映射数组;
    CLIENT LIST:获取连接到服务器的客户端连接列表;
    ROLE:返回主从实例所属的角色;
    SAVE:异步保存数据到硬盘;
    SHUTDOWN [NOSAVE] [SAVE]:异步保存数据到硬盘,并关闭服务器;
    SLAVEOF host port:将当前服务器转变为指定服务器的从属服务器(slave server);
    SYNC:用于复制功能(replication)的内部命令
    SLOWLOG subcommand [argument]:管理 redis 的慢日志
    cat redis.conf
    slowlog-log-slower-than 10000
    slowlog-max-len 128
    

    Redis常用命令整理:https://www.cnblogs.com/kevinws/p/6281395.html

  • 相关阅读:
    2020/11/06 模拟赛 T1
    2020/11/04 模拟赛 圆与圆之间的距离是不能一概而论的
    2020/11/04 模拟赛 经典字符串问题
    2020/11/03 模拟赛 偶数
    2020/11/03 模拟赛 斐波
    LG P7078 贪吃蛇
    js类和对象,继承(6中方式)
    js类和对象,继承(class语法题)
    网站
    品优购项目1- iconfont使用教程:
  • 原文地址:https://www.cnblogs.com/fawaikuangtu123/p/10388274.html
Copyright © 2020-2023  润新知