Redis常用命令

作者: Zhang21 | 来源:发表于2017-08-09 14:21 被阅读145次

    查看当前所有的KEY

    KEYS *

    KEYS zhang*    #查看前缀为zhang的所有键;  


    查看当前redis的配置信息

    CONFIG GET *


    强制停止redis快照导致redis用户没有权限写rdb文件或磁盘空间满了,解决方法

    config set stop-writes-on-bgsave-error no


    清除redis缓存

    redis-cli

    dbsize

    flushall

    exit


    删除redis当前数据库中的所有KEY

    flushdb


    删除redis所有数据库中的KEY

    flushall


    redis.conf 配置参数详解

    daemonize  yes    #运行可以守护进程启动,放置于后台;

    bind:x.x.x.x    #监听地址,建议只对本地127.0.0.1开放;

    protect-mode yes    #redis的保护模式;

    requirepass 密码    #设置密码;

    timeout 0    #关闭超时;

    tcp-keepalive 0    #在Linux上,指定值(秒)用于发送ACKs的时间,关闭连接需要双倍的时间,默认为0;

    loglevle notice    #指定日志记录的级别。有四个级别:debug(记录很多信息,用于开发测试)、notice(常用与生产环境)、warning(只有非常重要或严重的信息才会记录到日志)、verbose(有用的信息,比debug少);

    logfile  /var/log/redis/redis.log    #默认为stdout;

    databases n    #可用数据库,范围在0 - (database-1);

    save    #保存数据到磁盘(.rdb);

    stop-writes-on-bgsave-error yes    #后台储存错误停止写;

    rdbcompression yes    #储存到本地数据库时(持久化到rdb文件)是否压缩;

    dbfilename dump.rdb    #本地持久化数据库文件名,默认dump.rdb;

    dir /var/db/redis/    #数据库文件路径,是目录;

    #主从复制,设置该数据库主从;

    salveof    #设置本机为从库,设置好master的ip及端口,它会自动从master进行数据同步;

    masterauth    #设置主库认证的密码;

    slave-read-only yes    #设置slave是否接受写;

    slave-serve-stale-data yes    #从库同主库失去连接或复制正在进行时,从库是继续响应客户端请求还是否;

    repl-disable-tcp-nodelay no    #发送到slave的延迟会降低,但将更过的带宽用于复制;

    slave-priority 100    #master不能工作后,从众多slave中选出优先值最小的slave提升为master,优先值为0表示不能为master;

    appendonly no    #是否开启AOF数据备份,redis会把所接收到的每一次写操作请求都追加到appendonly.aof文件,当此文件很大;

    appendsync everysec    #AOF文件同步策略,后台会进行大量I/O;

    no-appendfsync-on-rewrite no    #环境AOF大量I/O;

    auto-aof-rewrite-percentage 100    #aof自动重写;

    auto-aof-rewrite-min-size 64mb    #指定最小大小用于aof重写;

    slowlog-log-slower-than 1000    #慢日志,记录超过特定执行时间的命令,不包括I/o;

    slowlog-max-len 128    #slow log的长度,超过大小,最先进入队列的记录会被踢出;

    hash-max-zipmap-entries 512    #hash将以一种特殊的编码方式(大大减少内存使用)来储存,这是其中一个临界值;

    hash-max-zipmap-value 64    #另外一个临界值;

    list-max-ziplist-entries 512    #多个list以特定的方式编码来节省空间;

    list-max-ziplist-value 64

    set-max-intset-entries 512

    zset-max-ziplist-entries 128

    zset-max-ziplist-value 64

    activerehashing yes    #Redis将在每100ms时使用1ms的CPU时间来对redis的hash表进行重新hash,可降低内存的使用;

    client-output-buffer-limit normal 0 0 0     #限制输出缓存;

    client-output-buffer-limit slave 256mb 64mb 60

    client-output-buffer-limit pubsub 32mb 8mb 60

    hz 10    #不是所有任务都以相同的频率执行,但redis按照指定的“hz”值执行检查任务;

    aof-rewrite-incremental-fsync yes    #当一个子节点重写AOF文件时,则文件每生产32m数据进行同步;


    Redis官方文档对VM的使用建议:

    当你的KEY很小二value很大时,使用VM的效果会比较好,因为这样节约内存比较大;

    当key不小时,可以考虑使用一些非常方法将很大的key变成value,比如将key,value组合成一个新的value。

    连接操作相关命令

    quit:关闭连接;

    auth:简单密码认证;

    help cmd:查看命令帮助;


    持久化

    save:将数据同步保存到磁盘;

    bgsave:将数据异步保存到磁盘;

    lastsave:返回上次成功将数据保存到磁盘的Unix时戳;


    远程服务控制

    info:提供服务器的信息统计;

    monitor:实时转储收到的请求;

    slaveof:改变复制策略设置;

    shundown:将数据同步保存到磁盘,然后关闭服务;

    value操作命令

    exists(key):判断一个key是否存在;

    del(key):删除一个key;

    type(key):返回值的类型;

    keys(pattern):返回满足给定模式的所有key;

    randomkey:随机返回key空间的一个;

    keyrename(oldname,newname):重命名key;

    dbsize:返回当前数据库中key的数目;

    expire:设定一个key的活动时间(s);

    ttl:获得一个key的活动时间;

    select(index):按索引查询;

    move(key,dbindex):移动当前数据库中的key到dbindex数据库;

    flushdb:删除当前选择的数据库中的所有key;

    flushall:删除所有数据库中的所有key;


    string操作命令

    set(key,value):给数据库中名称为key的string赋值value;

    get(key):返回数据库中名为key的string的value;

    getset(key,value):给名称为key的string赋予上一次的value;

    mget(key1,key2,...,key N):返回库中多个string的value;

    setnx(key,value):添加string,名称为key,值为value;

    setex(key,time,value):向库中添加string,设定过期时间time;

    mset(key 1,value 1,...,key N,value N):批量设置多个string的值;

    msetnx(key 1,value 1,...,key N,value N):如果所有名称为 key N的string都不存在,则向库中添加string,名称为 key N赋值value N;

    incr(key):名称为key的string加 1 操作;

    incrby(key,integer):名称为key的string增减integer;

    decr(key):名称为key的string减1操作;

    decrby(key,integer):名称为key的string的值附加value;

    append(key,value):名称为key的值附加value;

    substr(key,start,end):返回名称为key的string的value的子串;


    list操作的命令

    rpush(key,value):在名称为key的list尾部添加一个值为value的元素;

    lpush(key,value):在名称为key的list首部添加一个值为value的元素;

    llen(key)返回名称为key的list的长度;

    lrange(key,start,end):返回名称为key的list中start至end之间的元素(下表从0开始);

    ltrim(key,start,end):截取名称为key的list,保留start至end之间的元素;

    lindex(key,index):返回名称为key的list中index位置的元素;

    lset(key,index,value):给名称为key的list中index位置的元素赋值value;

    lrem(key,count,value):删除count个名称为key的list中值为value的元素;

    brpop(key1,key2,...,key N):rpop的block版本;

    rpoplpush(srckey,dstkey):返回并删除名为srckey的list尾元素,并将该元素添加到名为dstkey的list的头部;


    set操作的命令

    sadd(key,member):向名为key的set中添加元素member;

    srem(key,member):删除名为key的set中元素的member;

    spop(key):随机返回并删除名为key的set中的一个元素;

    smove(srckey,dstkey,member):将member元素从名为srckey的集合移动到名为dstkey的集合;

    scard(key):返回名为key的set的基数;

    sismember(key,member):测试member是否是名称为key的set的集合;

    sinter(key1,key2,...,key N):求交集;

    sinterstore(dstkey,key1,...,key N):求交集并将交集保存到dstkey的集合;

    sunion(key1,...,key N):求并集;

    sunionstore(dstkey,key 1,...,key N):求并集并将并集保存到dstkey的集合;

    sdiff(key1,...,key N):求差集;

    sdiffstore(dstkey,key 1,...,key N):求差集并将差集保存到dstkey的集合;

    smembers(key):返回名为key的set的所有元素;

    srandmember(key):随机返回名为key的set的一个元素;


    zset(sorted set)操作的命令

    zadd(key,score,member):向名为key的zset中添加元素member,score用于排序,如果该元素已经存在,则根据score更新该元素的顺序;

    zrem(key,member):删除名为key的zset中的元素member;

    zincrby(key,increment,member):如果在名为key的zset中已经存在元素member,则该元素的score增加increment,否则向集合中添加该元素,其score的值为increment;

    zrank(key,member):返回名为key的zset,顺序;

    zrevrank(key,member):返回名为key的zset,倒序;

    zrange(key,start,end):返回名为key的zset,score顺序按index从start到end返回所有元素;

    zrevrange(key,start,end):返回名为key的zset,score倒序按index从start到end返回所有元素;

    zrangebyscore(key,min,max):返回名为key的zset中score大于等于min,小于等于max的所有元素;


    hash操作命令

    hset(key,field,value):向名为key的hash中添加元素filed----value;

    hget(key,field):返回名为key的hash中field对应的value;

    hmset(key,field1,value1,...,field N,value N):向名为key的hash中添加元素field----value;

    hmget(key,field1,...,field N):返回名为key的hash中filed对应的value;

    hincrby(key,field,integer):将名为key的hash中field的value增加integer;

    hexists(key,field):名为key的hash中是否存在键为field的域;

    hdel(key,field):删除名为key的hash中键为field的域;

    hlen(key):返回名为key的hash中元素个数;

    hkeys(key):返回名为key的hash中所有键;

    hvals(key):返回名为key的hash中所有键对应的value;

    hgetall(key):返回名为key的hash中所有的键(field)及其对应的value;


    Redis高级应用


    安全性

    设置客户端连接后进行操作需要密码;

    requirepass password;

    redis-cli -a password 或者 进入后 auth password

    主从复制

    通过主从复制可以允许多个 slave 拥有和 master 相同的数据库副本;注意一下防火墙问题;

    slaveof  IP  port;

    masterauth password;

    事务处理

    redis对事务的支持还比较简单;

    redis只能保证一个client发起的事务中的命令可以连续执行,而中间不会插入其他的client的命令;

    当一个client在一个连接中发出multi命令时,这个连接会进入一个事务的上下文,连接后续命令不会不及执行,而是先放到一个队列中,当执行exec命令时,redis会顺序的执行队列中的所有命令;

    持久化机制

    redis持久化就是把数据从内存保存到硬盘;

    redis是一个支持持久化的内存数据库;

    snapshotting快照,默认的储存方式写入dump.rdb的二进制文件中,可以配置redis在 n秒内如果超过 m个key被修改就自动做快照;

    appendonly file,aof方式redis会将每一次的函数都追加到文件中,当redis重启时会重新执行文件中保存的命令;

    虚拟内存的使用

    配置 VM 功能,保存路径,最大内存上线,页面多少,页面大小,最大工作线程;

    相关文章

      网友评论

        本文标题:Redis常用命令

        本文链接:https://www.haomeiwen.com/subject/gghxrxtx.html