• Redis常用命令汇总及集群的配置


    Redis常用方法

    string

    get key 获取key的值
    set key v 设置key的值
    del key 删除key(应用于所有类型)
    incr key 将储存的值加上1
    decr key 将储存的值减去1
    incrby key amout 加上整数amount
    decrby key amout 减去整数amount
    incrbybyfloat key amout 加上浮点数amount字符串二进制
    append key v 将值追加到key当前储存值的末尾
    getrange key start end 获取下标start到end的字符串
    setrange key offset v 将字符串看做二进制位串,并将位串中偏移量为offset的二进制位的值
    getbit key offset 将字符串看做是二进制位串值为1的二进制位的数量,如果给定了可选的start偏移量和end偏移量,那么只对偏移量指定范围的二进制位进行统计
    bitop operation dest-key key-name [key-name …] 对一个或多个二进制位串进行 并and,或 or,异或XOR,非NOT 在内的任意一种安位运算符操作(bitwise operation),并将计算的结果放到dest -key里面

    list

    rpush key [v…] 将一个或多个加入列表右端
    lpush key [v…] 将一个或多个加入列表左端
    rpop key 移除并返回最右端的元素
    lpop key 移除并返回列表最左端的元素
    lindex key size 返回下标(偏移量)为size的元素
    lrange key start end 返回从start 到end的元素 包含start和end
    ltrim key start end 只保留从start 到end的元素 包含start和end

    hash

    hmget hkey key… 获取多个值
    hmset hkey key v… 为多个key设置值
    hdel hkey key… 删除多个值并返回
    hlen hkey 返回总数量
    hexists hkey key 检查key是否存在在散列中
    hkeys hkey 获取散列中所有key
    hvals hkey 获取三列中所有值
    hgetall hkey 获取散列
    hincrby hkey key increment 为key的值上加上整数increment
    hincrbyfloat hkey key increment 为key的值上加上浮点数increment

    set

    sadd key item … 添加多个,返回新添加的个数(已存在的不算)
    srem key item… 从集合移除多个元素 ,返回被移除元素的数量
    sismember key item 检查元素item是否在集合中
    scard key 返回集合总数
    smembers key 返回所有元素
    srandmember key cout 随机返回cout个元素 cout为正整数 随机元素不重复 相反可能会出现重复
    spop key 随机的移除一个元素 并返回已删除的元素
    smove key1 key2 item 如果key1中包含item 移除key1中的item 添加到key2中,成功返回1 失败返回0
    差运算 sdiffstore newkey key key1… 将存在于key集合但是不存在key1…集合的其他元素 放到newkey里面(咬掉一口剩下的)
    交运算 sinter key… 返回所有集合的交集(返回我们都有的的)
    交运算 sinterstore newkey key… 返回多个集合的交集生成集合newkey
    并运算 sunion key… (返回我们不重复的所有元素 )
    并运算 sunion newkey key… 结果放到newkey中

    zset

    zadd key score member … 添加多个
    zerm key memer… 移除多个
    zcard key 返回所有成员
    zincrby key incremnet member 将member成员的分值加上increment
    zcount key min max 返回分值在 min和max中间的排名
    zrank key member 返回成员member在集合中的排名
    zscore key member 返回member的分值
    zrange key start stop 返回 介于两者之间的成员

     GEO

    #设置经纬
    127.0.0.1:6379> GEOADD China:city 116.40 39.90 beijing (integer) 1 127.0.0.1:6379> GEOADD China:city 121.47 31.23 shanghai (integer) 1 127.0.0.1:6379> GEOADD China:city 106.50 29.53 chongqin (integer) 1 127.0.0.1:6379> GEOADD China:city 114.08 22.54 shenzhen 113.28 23.12 guangzhou (integer) 2 127.0.0.1:6379> keys * 1) "China:city" 127.0.0.1:6379> get China:city (error) WRONGTYPE Operation against a key holding the wrong kind of value
    #获得城市经纬 127.0.0.1:6379> GEOPOS China:city beijing 1) 1) "116.39999896287918091" 2) "39.90000009167092543" 127.0.0.1:6379> GEOPOS China:city chongqin 1) 1) "106.49999767541885376" 2) "29.52999957900659211"
    #查询城市距离

    127.0.0.1:6379> GEODIST China:city beijing shanghai

    "1067378.7564"

     #查询距离附带距离单位

    127.0.0.1:6379> GEODIST China:city beijing shanghai km

    "1067.3788"

    127.0.0.1:6379> GEODIST China:city beijing chongqin m

    "1464070.8051"

    #以给定的经纬度为中心, 返回键包含的位置元素当中, 与中心的距离不超过给定最大距离的所有位置元素。

    127.0.0.1:6379> GEORADIUS China:city 110 30 1000 km

    1) "chongqin"

    2) "shenzhen"

    3) "guangzhou"

    #附带经纬

    127.0.0.1:6379> GEORADIUS China:city 110 30 1000 km withcoord

    1) 1) "chongqin"

       2) 1) "106.49999767541885376"

          2) "29.52999957900659211"

    2) 1) "shenzhen"

       2) 1) "114.08000081777572632"

          2) "22.53999903789756587"

    3) 1) "guangzhou"

       2) 1) "113.27999979257583618"

          2) "23.1199990030198208"

    #限制查询数量

    127.0.0.1:6379> GEORADIUS China:city 110 30 1000 km withcoord count 1

    1) 1) "chongqin"

       2) 1) "106.49999767541885376"

          2) "29.52999957900659211"

    #查询到中心点的距离

    127.0.0.1:6379> GEORADIUS China:city 110 30 1000 km WITHDIST

    1) 1) "chongqin"

       2) "341.9374"

    2) 1) "shenzhen"

       2) "923.9364"

    3) 1) "guangzhou"

       2) "831.7713"

    #找出位于指定元素周围的其他元素(一般用于查找城市)

    127.0.0.1:6379> GEORADIUSBYMEMBER China:city beijing 1000 km

    1) "beijing"

     #该命令将返回11个字符的Geohash字符串,将二维的经纬转化为一维的字符串

    127.0.0.1:6379> GEOHASH China:city beijing chongqin

    1) "wx4fbxxfke0"

    2) "wm5xzrybty0"

    127.0.0.1:6379> ZRANGE China:city 0 -1

    1) "chongqin"

    2) "shenzhen"

    3) "guangzhou"

    4) "shanghai"

    5) "beijing"

    127.0.0.1:6379> ZREM China:city beijing

    (integer) 1

    127.0.0.1:6379> ZRANGE China:city 0 -1

    1) "chongqin"

    2) "shenzhen"

    3) "guangzhou"

    4) "shanghai"

     HyperLogLog

    #统计基数算法,占用磁盘空间少,但有0.81%的概率出错,如果允许出错,可以使用HyperLoglog
    #如果不允许出错,就使用set或者自己的数据类型
    
    #创建两组元素
    127.0.0.1:6379> PFADD mykey a b c d e f g
    (integer) 1
    127.0.0.1:6379> PFADD mykey2 h i j k a b c
    (integer) 1
    127.0.0.1:6379> PFCOUNT mykey
    (integer) 7
    127.0.0.1:6379> PFCOUNT mykey2
    (integer) 7
    #合并元素,去重
    127.0.0.1:6379> PFMERGE mykey2 mykey mykey2
    OK
    #查看并集数量
    127.0.0.1:6379> PFCOUNT mykey2
    (integer) 11
    127.0.0.1:6379> get mykey2
    "HYLLx01x00x00x00x0bx00x00x00x00x00x00x00Fmx80Ixe8x80L"x80D<x848x80B=x80Kx83x80Bxedx84Axfcx8cGx8ex80Bmx80BZ"
    

     bitmaps 位图算法,一般适用于状态判断的场景,方便快捷且节省磁盘空间

    127.0.0.1:6379> SETBIT sign 0 1
    (integer) 0
    
    127.0.0.1:6379> GETBIT sign 0
    (integer) 1
    127.0.0.1:6379> SETBIT sign 1 1
    (integer) 0
    127.0.0.1:6379> GETBIT sign 1
    (integer) 1
    127.0.0.1:6379> SETBIT sign 2 0
    (integer) 0
    127.0.0.1:6379> GETBIT sign 2
    (integer) 0
    127.0.0.1:6379> BITCOUNT sign
    (integer) 2
    127.0.0.1:6379> 
    

    Redis集群配置

    主从数据库配置,常规一主二从

    1:cp redis.conf redis6379.conf  cp redis.conf redis6380.conf cp redis.conf redis6381.conf

    2:修改相应的redis63XX.conf配置文件参数,配从不配主

    (端口,后台运行,pid名称,日志级别,日志文件名,dump.rdb名称)

    如:port 6380,port 6381

    daemonize yes

    pidfile /usr/local/redis-6.0.5/redis6380.pid

    loglevel notice

    logfile "6380.log"

    dbfilename "dump6380.rdb"

    3:启动服务

    sh-3.2# pwd
    /Users/yusuwu
    sh-3.2# cd /usr/local/etc/
    sh-3.2# redis-server redis6380.conf 
    sh-3.2# redis-cli -p 6380
    127.0.0.1:6380> info replication
    # Replication
    role:master
    connected_slaves:0
    master_replid:b83f2b3ed1c303bf2f2e6b75da2b0ae351e36efc
    master_replid2:0000000000000000000000000000000000000000
    master_repl_offset:0
    second_repl_offset:-1
    repl_backlog_active:0
    repl_backlog_size:1048576
    repl_backlog_first_byte_offset:0
    repl_backlog_histlen:0
    127.0.0.1:6380> SLAVEOF 127.0.0.1 6379
    OK
    127.0.0.1:6380> info replication
    # Replication
    role:slave
    master_host:127.0.0.1
    master_port:6379
    master_link_status:up
    master_last_io_seconds_ago:5
    master_sync_in_progress:0
    slave_repl_offset:0
    slave_priority:100
    slave_read_only:1
    connected_slaves:0
    master_replid:89c6a0b4e2544c931ce702b63aa45175532ea2e6
    master_replid2:0000000000000000000000000000000000000000
    master_repl_offset:0
    second_repl_offset:-1
    repl_backlog_active:1
    repl_backlog_size:1048576
    repl_backlog_first_byte_offset:1
    repl_backlog_histlen:0
    

     6379启动默认为主机,将6380,6381设置为从机,

    #设置回主机
    127.0.0.1:6380> SLAVEOF no one
    OK
    127.0.0.1:6380> info replication
    # Replication
    role:master
    connected_slaves:0
    master_replid:cddfb24b87742c871ccbdaa733e1cf5e4396966d
    master_replid2:89c6a0b4e2544c931ce702b63aa45175532ea2e6
    master_repl_offset:1792
    second_repl_offset:1793
    repl_backlog_active:1
    repl_backlog_size:1048576
    repl_backlog_first_byte_offset:1
    repl_backlog_histlen:1792
    127.0.0.1:6380> 
    

     以上为命令操作,是暂时的,在实际开发中是在redis.conf配置文件中配置

    replicaof <masterip> <masterport>

    masterauth <master-password>

    masteruser <username>

    哨兵模式配置

    哨兵模式是一种特殊的模式,需要独立的进程。

    配置哨兵

    touch sentinel.conf

    vim sentinel.conf

    sentinel monitor myredis 127.0.0.1 6379 1   #sentinel monitor 主机名 host port 1

    后面的数字,代表主机挂了,slave投票决定谁担任主机,票数最多的为主机。

    启动哨兵

    redis-sentinel /uer/local/redis-6.0.5/sentinel.conf

    注:这里只是粗略的设置,实际应用中会更详细。

  • 相关阅读:
    网络协议-网络编程学习方法介绍
    socket函数集-----网络编程必备值得拥有
    QT 等待对话框/进度--
    qt部分类释义
    Unicode 10.0版本出现了,可以表达13万个字符, 99年定制的3.0版本不超过6万个字符
    hadoop+spark+mongodb+mysql+c#
    mysql 主从复制
    Docker for Windows
    项目设计&重构&性能优化
    发布项目到 Linux 上运行 Core 项目
  • 原文地址:https://www.cnblogs.com/xibushijie/p/13330594.html
Copyright © 2020-2023  润新知