【基础】redis数据库(常用命令、错误及配置)

一、常用命令

1)查看redis当前所有的key

keys *

2)查看redis当前的配置信息

config get *

3)设置键值(set命令)

参数说明:EX seconds    #设置键的过期时间,单位为秒

                PX milliseconds    #设置键的过期时间,单位为毫秒

                NX    #只有当键不存在的时候才能设置key值

                XX    #只有当键存在的时候才能设置key值     

4)判断一个键值是否存在

exists key    #如果key存在,返回整数类型1,否则返回0

  

5)获取键值(get命令)     

get key    # 如果key不存在,则返回<nil>


6)删除键值(del命令)

del key    #如果key删除成功,返回整数类型1,否则返回0


7)设置/移除key的过期时间

expire key seconds    #设置key的过期时间,单位为秒

pexpire key milliseconds    #设置key的过期时间,单位为毫秒

ttl key        #查看key的剩余生存时间,TTL(Time To Live),单位秒

pttl key        #查看key的剩余生存时间,单位毫秒


8)查看key所储存的值的类型

type key


9)清空redis服务器的所有数据(删除所有数据库的所有key)

flushall


10)清空当前数据库的所有数据

flushdb


二、常见错误

1)MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk. Commands that may modify the data set are disabled. Please check Redis logs for details about the error.;

原因:强制停止redis快照导致,redis运行用户没有权限写rdb文件或者磁盘空间满了

解决方法:config set stop-writes-on-bgsave-error no

2)redis 127.0.0.1:6379> CONFIG SET logfile "/var/log/redis/redis-server.log"

(error) ERR Unsupported CONFIG parameter: logfile

原因:不能通过set动态设置logfile

3)(error)OOM command not allow when used memory>'maxmemory'

原因:redis内存使用达到上限,不允许再存数据

解决方法:1.增加redis内存,修改redis.conf

                    maxmemory 2GB

                    如果不设置maxmemory或者设置为0,则64位操作系统不限制内存,32位系统最多使用3GB内存。

                 2.修改redis存储策略

                    默认的redis设置是非常保守的,即内存超限后就不再存储,可以把策略修改为LRU算法(最近最少使用算法),使新存储的信息替换掉旧的信息,而不会内存越限,修改redis.conf

                maxmemory-policy volatile-lru

                redis的存储策略包括:

                volatile-lru    #根据LRU算法(最少最近没使用)来选取,并删除已经设置了expire时间的key

                allkeys-lru    #根据LRU算法,删除任意的key,不论key是否设置了expire时间

                volatile-random    #随机删除设置了expire时间的key

                allkey-random    #随机删除任意一个key,不论key是否设置了expire时间

                volatile-ttl    #删除具有最近终止时间值(TTL)的key。

                noeviction    #不删除,写操作时返回错误

                 3.减少数据存入redis,考虑是否有必要将数据存入redis

说明:若没有设置maxmemory变量,即使设置了maxmemory-policy,也不会起作用

          若没有设置maxmemory变量,在处理命令时将不会调用释放策略,会加速命令的处理过程

          当设置了maxmemory参数后,在处理每个命令的时候都会根据maxmemory-policy去删除对应的key值

对于LRU机制,redis的LRU算法不是真正意义上的LRU,而是使用另外一种方式实现的,也就意味着,redis并不能每次都选择一个最好的key来删除。没有使用真正的LRU算法的原因是,它可能会消耗更多的内存,该算法和真正的LRU算法效果大致相同。redis是在一小部分key中选择最优的要删除的key。这一小部分key的个数可以指定,可以在配置文件中设置参数maxmemory-samples。

4)redis日志位置

logfile日志记录方式,默认值为stdout,如果设置为stdout且以守护进程方式运行,那么日志会被重定向到/dev/null,也就是不写日志。


三、配置参数详解

daemonize no #默认情况下,redis不是在后台运行的,如果需要在后台运行,将该参数的值设置为yes

daemonize yes    #当redis在后台运行时,redis默认会把pid文件放在/var/run/redis.pid,可以配置成其他地址

pidfile /var/run/redis_6379.pid    #当运行多个redis服务时,需要指定不同的pid文件和端口

port 6379    #指定redis运行的端口,默认是6379

tcp-backlog 511    #在高并发的环境中,为避免慢客户端的连接问题,需要设置一个高速后台日志

bind 192.168.1.100 10.0.0.1 #指定redis只接收来自于该IP地址的请求,如果不进行设置,那么将处理所有请求

timeout 0  #设置客户端连接时的超时时间,单位为秒,当客户端在这段时间内没有发生任何指令,则关闭该连接。0表示关闭此设置

TCP keepalive  0  #在Linux上,指定值(秒)用于发送ACK的时间,注意关闭连接需要双倍的时间。默认为0

loglevel notice    #指定日志级别,生产环境推荐notice。redis总共支持四个级别:debug、verbose、notice、warning,默认为verbose。

                               debug    #常用于开发和测试    verbose #有用的信息,不像debug会记录这么多

                                 notice #普通的verbose,常用于生产环境。warning    #重要或严重的信息记录到日志

logfile    /var/log/redis/redis.log    #配置log文件地址,默认值为stdout,标准输出。

databases 16    #可用的数据库数,默认值为16,默认数据库为0,数据库范围为0到databases-1之间

save        #保存数据到磁盘。表示在多长时间内,有多少次更新操作,就将数据同步到数据文件rdb,相当于条件触发抓取快照,这个可以多个条件配合

                如save 60 10000     #60秒内至少有10000个key被改变

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

rdbcompression yes    #存储至本地数据库时(持久到rdb文件)是否压缩数据,默认为yes

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

requirepass foobared    #设置客户端密码

maxclients 1000    #设置同一时间最大客户端连接数,默认无限制。redis可以同时打开的客户端连接数为redis进程可以打开的最大文件描述符数,如果设置为0,表示不限制,当客户端连接数到达限制时,redis会关闭新的连接并向客户端返回max number of clients reached错误信息

slowlog-log-slower-than 10000    #记录超过特定执行时间的命令,执行时间不包括I/O计算,比如连接客户端,返回结果等,只是命令执行时间。时间以微秒为单位,因此1000000代表1秒,若设置为负数,则关闭慢日志,若设置为0,则每个执行命令都会记录

slowlog-max-len 128    #慢日志记录长度,默认值128,当慢日志超过128,最先进入队列的记录会被踢出

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值