zoukankan      html  css  js  c++  java
  • redis

    Redis
    epoll模式,单线程
    default with 16 dbs

    set key value
    set key value ex 2 #只存活2s
    keys *
    get key

    String操作:
    ex:过期时间s
    px:过期时间ms
    nx,True,name不存在时,set才执行
    xx,True,name存在时候,set才执行

    setnx(name, value) #name不存在设置
    setex(name, value, time) #过期时间,time是s或timedelta对象
    psetex(name, time_ms, value) #过期时间,time是ms或timedelta对象
    mset(*args, **kwargs) #批量设置
    getset(name, value) #获取以前的值, 设置新值
    getrange(name, start, end) #对取出的值按range切片
    setrange(name, offset, value) #从偏移量开始替换
    setbit(name, offset, value) #修改二进制位置 c
    getbit(name, offset) #获取name的offset位置的值
    bitcount name #显示name里有几个1
    incr name #给name +1
    decr name #给name -1
    incrbyfloat name value #给name +value
    append name value #给name追加value

    hash操作:
    hset hashname name value name value #存hash
    hget hashname name #读hash
    hkeys hashname #read hash keys
    hvalues hashname #read hash values
    hmset # set multi hash
    hmget # get multi hash
    hexist
    hincrby
    hscan

    list
    lpush names hinimix audrey sophie # create a list named names and append 3 elements from left #left push FILO
    lrange names 0 -1 # print the elements of all
    rpush names annie # append the list
    LINSERT names before{after} hinimix TEST
    lset names 2 test # set a value
    lrem names 1 test # remove a value from finger
    lindex names index # get value of index
    ltrin names 1 2 # delete value , index not equal 1 2
    rpoplpush names names2 #delete the rightmost from names and insert it to the leftmost of names2
    blpop names 4 #wait 4s if names include nothing, otherwise return the last value
    blpoplpush

    set
    smemberes name #list members of name
    sadd name 1 2 33 33 # add a set named name
    scard name #count numbers of name
    sdiff name1 name2 # in name1, not in name2
    sdiffstore name3 name1 name2 #store the result in name3 above
    sinter name3 name4 #both in name3 or name4
    sinterstore #same as above
    sismember name value # judge value where is in name
    smove src dst value #move a value from a set to another
    spop name #pop from rightmost
    srandmember #get member random
    srem # delete a member
    subscribe #
    sunion name1 name2 # both in name3 and name4

    order set
    zadd h1 n h2 n h3 n name #zadd name weight
    zrange name 0 -1 withscores
    zinterstore new_name name1 name2 #find same name and add their store



    other actions
    del "a"
    keys in* # list keys start with in
    expire name time #set expire time
    rename name
    move name db # move name to db

    publish and subscribe

    import redis
    
    class RedisHelper:
    
        def __init__(self):
            self.__conn = redis.Redis(host="192.168.20.61", port=6379, db=1)
            self.chan_sub = 'hnm100.0'
            self.chan_pub = 'hnm100.0'
    
        def public(self, msg):
            self.__conn.publish(self.chan_pub, msg)
            return True
    
        def subscribe(self):
            pub = self.__conn.pubsub()      #start subcribe
            pub.subscribe(self.chan_sub)
            pub.parse_response()
            return pub
    
    
    rh = RedisHelper()
    redis_sub = rh.subscribe()
    
    while True:
        msg = redis_sub.parse_response()
        print(msg)
    
    
    
    

    http://redis.cn/commands.html

    cluster saveconfig:  存储node-config信息

    config rewrite:  存储配置文件信息

    config get:

    config set:

    实例关闭命令

    1
    2
    redid-cli  shutdown  说明:关闭时强制 bgsave 所以需要一些时间
       注:在start时,需要先加载数据到内存,数据加载完毕之后 redis 才会listen 端口

    集群相关命令

    1
    2
    3
    1、CLUSTER INFO 打印集群的信息  
    2、CLUSTER NODES 列出集群当前已知的所有节点(node),以及这些节点的相关信息。 
    3、CLUSTER FAILOVER 手动故障转移,需要在slave节点上执行

    节点 相关命令

    1
    2
    3
    4
    1、CLUSTER MEET <ip> <port> 将 ip 和 port 所指定的节点添加到集群当中,让它成为集群的一份子。  
    2、CLUSTER FORGET <node_id> 从集群中移除 node_id 指定的节点。  
    3、CLUSTER REPLICATE  <node_id> 将当前节点设置为 node_id 指定的节点的从节点。  
    4、CLUSTER SAVECONFIG 将节点的配置文件保存到硬盘里面。

    槽(slot)相关命令  

    1
    2
    3
    4
    5
    6
    7
    1、CLUSTER ADDSLOTS <slot> [slot ...] 将一个或多个槽(slot)指派(assign)给当前节点。  
    2、CLUSTER DELSLOTS <slot> [slot ...] 移除一个或多个槽对当前节点的指派。  
    3、CLUSTER FLUSHSLOTS 移除指派给当前节点的所有槽,让当前节点变成一个没有指派任何槽的节点。  
    4、CLUSTER SETSLOT <slot> NODE <node_id> 将槽 slot 指派给 node_id 指定的节点,如果槽已经指派给另一个节点,那么先让另一个节点删除该槽,然后再进行指派。  
     1)、CLUSTER SETSLOT <slot> MIGRATING <node_id> 将本节点的槽 slot 迁移到 node_id 指定的节点中。  
     2)、CLUSTER SETSLOT <slot> IMPORTING <node_id> 从 node_id 指定的节点中导入槽 slot 到本节点。  
     3)、CLUSTER SETSLOT <slot> STABLE  取消对槽 slot 的导入(import)或者迁移(migrate)。

    键相关命令

    1
    2
    3
    1、CLUSTER KEYSLOT <key> 计算键 key 应该被放置在哪个槽上。  
    2、CLUSTER COUNTKEYSINSLOT <slot> 返回槽 slot 目前包含的键值对数量。  
    3、CLUSTER GETKEYSINSLOT <slot> <count>   返回 count 个 slot 槽中的键。

    不支持的命令:

    1
    2
    1、不支持SELECT 命令,集群只使用数据库 0 
    2、不支持多个KEY的操作 如 MSET、SUION、SINTER等命令 (因为KEYS 无法hash到同一个slot中)

    redis-trib.rb 相关命令

    1
    2
    3
    4
    5
    1、redis-trib.rb create [--replicas N] host:ip [host:ip ...]  创建集群
    2、redis-trib.rb add-node host:ip host:ip  将前面的host:ip 添加到集群中
    3、redis-trib.rb check host:ip 检查集群的状态
    4、redis-trib.rb reshard host:ip OR  redis-trib.rb reshard --from host:port --to host:port --slots --yes集群重新分片
    5、redis-trib.rb del-node host:ip 'NODE ID' 将节点从集群中移除

    Redis 慢查询

        Redis 的慢查询日志功能用于记录执行时间超过给定时长的命令请求, 用户可以通过这个功能产生的日志来监视和优化查询速度。

    服务器配置有两个和慢查询日志相关的选项:

       slowlog-log-slower-than 选项指定执行时间超过多少微秒(1 秒等于 1,000,000 微秒)的命令请求会被记录到日志上。
        举个例子, 如果这个选项的值为 100 , 那么执行时间超过 100 微秒的命令就会被记录到慢查询日志; 如果这个选项的值为 500 , 那么执行时间超过 500 微秒的命令就会被记录到慢查询日志; 诸如此类。

        slowlog-max-len 选项指定服务器最多保存多少条慢查询日志。
        服务器使用先进先出的方式保存多条慢查询日志: 当服务器储存的慢查询日志数量等于 slowlog-max-len 选项的值时, 服务器在添加一条新的慢查询日志之前, 会先将最旧的一条慢查询日志删除。
    举个例子, 如果服务器 slowlog-max-len 的值为 100 , 并且假设服务器已经储存了 100 条慢查询日志, 那么如果服务器打算添加一条新日志的话, 它就必须先删除目前保存的最旧的那条日志, 然后再添加新日志。

    例:首先用 CONFIG_SET 命令将 slowlog-log-slower-than 选项的值设为 0 微秒, 这样 Redis 服务器执行的任何命令都会被记录到慢查询日志中; 接着将 slowlog-max-len 选项的值设为 5 , 让服务器最多只保存5个;最后使用 SLOWLOG GET 命令查看服务器所保存的慢查询日志

    
    
  • 相关阅读:
    [清华集训2016]温暖会指引我们前行——LCT+最大生成树
    BZOJ1415[Noi2005]聪聪和可可——记忆化搜索+期望dp
    NOIP2018游记
    BZOJ4832[Lydsy1704月赛]抵制克苏恩——期望DP
    BZOJ1906树上的蚂蚁&BZOJ3700发展城市——RMQ求LCA+树链的交
    BZOJ2822[AHOI2012]树屋阶梯——卡特兰数+高精度
    BZOJ4001[TJOI2015]概率论——卡特兰数
    BZOJ1805[Ioi2007]Sail船帆——线段树+贪心
    [IOI2018]排座位——线段树
    BZOJ3718[PA2014]Parking——树状数组
  • 原文地址:https://www.cnblogs.com/hinimix/p/9198902.html
Copyright © 2011-2022 走看看