前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >redis配置信息以及常用命令

redis配置信息以及常用命令

作者头像
程序员爱酸奶
发布2020-03-04 18:24:38
5450
发布2020-03-04 18:24:38
举报
文章被收录于专栏:程序员爱酸奶

前言

本来不打算写这篇的,因为网上有很多这种的,最后想想,既然打算做一个redis系列,还是把这一篇补上,刚好这段时间有个同事做了一个redis的基础培训,整理的很好,就拿来借用一下,但是我们实际开发中其实用不了那么多,我们对这些配置和命令有个大概的了解就行,也不用死记硬背的把每个命令和配置记住,当然诸位如果能记住那就更好啦。

关于redis的介绍就不多说了,持久化,速度快,单线程,基于内存。

配置文件

redis的配置文件是redis.conf。我们上次安装的时候把它放在了/use/local/redis/etc/redis.conf,默认的配置文件应该在安装目录下的src/redis.conf

配置文件的内容有很多

1、Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程

代码语言:javascript
复制
daemonize no

2、当Redis以守护进程方式运行时,Redis默认会把pid写入/var/run/redis.pid文件,可以通过pidfile指定

代码语言:javascript
复制
pidfile /var/run/redis.pid

3、指定Redis监听端口,默认端口为6379

代码语言:javascript
复制
port 6379

4、绑定的主机地址

代码语言:javascript
复制
bind 127.0.0.1

5、当 客户端闲置多长时间后关闭连接,如果指定为0,表示关闭该功能

代码语言:javascript
复制
timeout 300

6、指定日志记录级别,Redis总共支持四个级别:debug、verbose、notice、warning,默认为verbose

代码语言:javascript
复制
loglevel verbose

7、日志记录方式,默认为标准输出,如果配置Redis为守护进程方式运行,而这里又配置为日志记录方式为标准输出,则日志将会发送给/dev/null,如果需要存储日志可以设置具体文件名。

代码语言:javascript
复制
logfile “/home/gdmt/mastercom/redis-4.0.5/bin/log_master.log”

8、设置数据库的数量,默认数据库为0,可以使用SELECT 命令在连接上指定数据库id

代码语言:javascript
复制
databases 16

9、指定在多长时间内,有多少次更新操作,就将数据同步到数据文件,可以多个条件配合

代码语言:javascript
复制
save 
Redis默认配置文件中提供了三个条件:
save 900 1
save 300 10
save 60 10000

分别表示900秒(15分钟)内有1个更改,300秒(5分钟)内有10个更改以及60秒内有10000个更改。

10、指定存储至本地数据库时是否压缩数据,默认为yes,Redis采用LZF压缩,如果为了节省CPU时间,可以关闭该选项,但会导致数据库文件变的巨大

代码语言:javascript
复制
rdbcompression yes

11、指定本地数据库文件名,默认值为dump.rdb

代码语言:javascript
复制
dbfilename dump.rdb

12、指定本地数据库存放目录

代码语言:javascript
复制
dir “/home/mastercom/redis-4.0.5/bin”

13、设置当本机为slav服务时,设置master服务的IP地址及端口,在Redis启动时,它会自动从master进行数据同步

代码语言:javascript
复制
slaveof 127.0.0.1:6399

14、当master服务设置了密码保护时,slav服务连接master的密码

代码语言:javascript
复制
masterauth 123456

15、设置Redis连接密码,如果配置了连接密码,客户端在连接Redis时需要通过AUTH 命令提供密码,默认关闭

代码语言:javascript
复制
requirepass foobared

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

代码语言:javascript
复制
maxclients 1000

17、指定Redis最大内存限制,Redis在启动时会把数据加载到内存中,达到最大内存后,Redis会先尝试清除已到期或即将到期的Key,当此方法处理 后,仍然到达最大内存设置,将无法再进行写入操作,但仍然可以进行读取操作。Redis新的vm机制,会把Key存放内存,Value会存放在swap区

代码语言:javascript
复制
maxmemory

18、指定是否在每次更新操作后进行日志记录,Redis在默认情况下是异步的把数据写入磁盘,如果不开启,可能会在断电时导致一段时间内的数据丢失。因为 redis本身同步数据文件是按上面save条件来同步的,所以有的数据会在一段时间内只存在于内存中。默认为no

代码语言:javascript
复制
appendonly no

19、指定更新日志文件名,默认为appendonly.aof

代码语言:javascript
复制
appendfilename appendonly.aof

总结一下

上面那么多配置,我和大家一样没有都记住,只是了解一个大概,要用的时候能查就行,上面很多都是默认配置,感觉一般要设置的下面这几个

代码语言:javascript
复制
daemonize yes
port  端口号
bind ip 
slaveof <masterip> <masterport>
requirepass foobared

常用命令

针对key的命令

代码语言:javascript
复制
exists(key):确认一个key是否存在
del(key):删除一个key
type(key):返回值的类型
keys(pattern):返回满足给定pattern的所有key
randomkey:随机返回key空间的一个
keyrename(oldname, newname):重命名key
dbsize:返回当前数据库中key的数目
expire:设定一个key的活动时间(s)
ttl:获得一个key的活动时间
move(key, dbindex):移动当前数据库中的key到dbindex数据库
flushdb:删除当前选择数据库中的所有key--慎用
flushall:删除所有数据库中的所有key--慎用

真正常用的就

代码语言:javascript
复制
exists key
del key
type key
dbsize
expire

针对String类型的命令

代码语言:javascript
复制
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):如果key不存在,添加string,名称为key,值为value
setex(key, time, value):向库中添加string,设定过期时间time
mset(key N, value N):批量设置多个string的值
msetnx(key N, value N):如果所有名称为key 的string都不存在 就添加
incr(key):名称为key的string增1操作
incrby(key, integer):名称为key的string增加integer
decr(key):名称为key的string减1操作
decrby(key, integer):名称为key的string减少integer
append(key, value):名称为key的string的值附加value
substr(key, start, end):返回名称为key的string的value的子串

我认为常用的

代码语言:javascript
复制
set
get 
mset
mget
incr
decr

针对List类型

代码语言:javascript
复制
rpush(key, value):在名称为key的list尾添加一个值为value的元素
lpush(key, value):在名称为key的list头添加一个值为value的 元素
llen(key):返回名称为key的list的长度
lrange(key, start, end):返回名称为key的list中start至end之间的元素,-1是最后一位的索引
ltrim(key, start, end):截取名称为key的list
lindex(key, index):返回名称为key的list中index位置的元素
lset(key, index, value):给名称为key的list中index位置的元素赋值
lrem(key, count, value):删除count个key的list中值为value的元素
lpop(key):返回并删除名称为key的list中的首元素
rpop(key):返回并删除名称为key的list中的尾元素
blpop(key1, key2,… key N, timeout):lpop命令的block版本。
brpop(key1, key2,… key N, timeout):rpop的block版本。
rpoplpush(srckey, dstkey):返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部

一样我认为常用的,但是感觉list 用的不多

代码语言:javascript
复制
rpush
lpush
rlang
llen
lpop
rpop

针对set类型

代码语言:javascript
复制
sadd(key, member):向名称为key的set中添加元素member
srem(key, member) :删除名称为key的set中的元素member
spop(key) :随机返回并删除名称为key的set中一个元素
smove(srckey, dstkey, member) :移到集合元素
scard(key) :返回名称为key的set的基数
sismember(key, member) :member是否是名称为key的set的元素
sinter(key1, key2,…key N) :求交集
sinterstore(dstkey, (keys)) :求交集并将交集保存到dstkey的集合
sunion(key1, (keys)) :求并集
sunionstore(dstkey, (keys)) :求并集并将并集保存到dstkey的集合
sdiff(key1, (keys)) :求差集
sdiffstore(dstkey, (keys)) :求差集并将差集保存到dstkey的集合
smembers(key) :返回名称为key的set的所有元素
srandmember(key) :随机返回名称为key的set的一个元素

感觉这个是用的最少了,很多都记不住,就知道添加和读取.zset 和set的都用的很少

代码语言:javascript
复制
sadd
smembers

sadd
zrange

针对Hash类型

代码语言:javascript
复制
hset(key, field, value):向名称为key的hash中添加元素field
hget(key, field):返回名称为key的hash中field对应的value
hmget(key, (fields)):返回名称为key的hash中field i对应的value
hmset(key, (fields)):向名称为key的hash中添加元素field 
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

hash类型用的比较多,特别是对象存储时候,基本上都是用hash 存储的。

代码语言:javascript
复制
hset
hget
hmset
hmget

看到这的小伙伴,对文章有什么建议赶紧提出来吧!这一期想写 redis 的。从 redis 安装到redis 简单使用,redis主从复制,redis 持久化,哨兵模式,集群模式。由浅及深图文讲解帮助大家全面深刻的了解reidis 知识。如果大家感兴趣可以持续关注。觉得好看记得分享哟❤

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-09-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员爱酸奶 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 配置文件
    • 总结一下
    • 常用命令
      • 针对key的命令
        • 针对String类型的命令
          • 针对List类型
            • 针对set类型
              • 针对Hash类型
              相关产品与服务
              云数据库 Redis
              腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档