redis配置信息以及常用命令

前言

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

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

配置文件

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

配置文件的内容有很多

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

daemonize no

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

pidfile /var/run/redis.pid

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

port 6379

4、绑定的主机地址

bind 127.0.0.1

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

timeout 300

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

loglevel verbose

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

logfile “/home/gdmt/mastercom/redis-4.0.5/bin/log_master.log”

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

databases 16

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

save  Redis默认配置文件中提供了三个条件:  save 900 1  save 300 10  save 60 10000

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

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

rdbcompression yes

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

dbfilename dump.rdb

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

dir “/home/mastercom/redis-4.0.5/bin”

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

slaveof 127.0.0.1:6399

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

masterauth 123456

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

requirepass foobared

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

maxclients 1000  

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

maxmemory

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

appendonly no

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

appendfilename appendonly.aof

总结一下

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

daemonize yes  port  端口号  bind ip  slaveof <masterip> <masterport>  requirepass foobared

常用命令

针对key的命令

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--慎用

真正常用的就

exists key  del key  type key  dbsize  expire

针对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):如果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的子串

我认为常用的

set  get  mset  mget  incr  decr

针对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之间的元素,-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 用的不多

rpush  lpush  rlang  llen  lpop  rpop

针对set类型

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的都用的很少

sadd  smembers    sadd  zrange  

针对Hash类型

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 存储的。

hset  hget  hmset  hmget

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