尚硅谷 Redis 数据库_第1页
尚硅谷 Redis 数据库_第2页
尚硅谷 Redis 数据库_第3页
尚硅谷 Redis 数据库_第4页
尚硅谷 Redis 数据库_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

尚硅谷Redis数据库

★:了解、可以明确描述内容

★★:熟悉、工作中经常会用到

必背、面试中经常会问到

1.Redis入门

1.1.什么是Redis?★★★

1)是完全开源免费的,用C语言编写的,遵守BSD开源协议,是一个基于内存运行的、高性能的、并支

持持久化和分布式的NoSQL数据库,是当前最热门的NoSQL(NotOnlySQL)数据库之一,也被人们

称为数据结构服务器。

2)Redis与其他Key-Value数据库有以下三个特点:(常对比与Memcached)

1.Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用

2.Redis不仅支持简单的key-value类型(string)的数据,同时还提供list,set,zset,hash数据结

构的存储

3.Redis支持master-slave模式的主从复制和事务操作

1.2.Redis与其他数据库对比★★★

名称类型数据存储选项查询类型附加功能

使用内存存储的每种数据类型都有自己的专属命令,另发布与订阅,主从复制,持

Redis字符串、列表、集合、散列表、有序集合

非关系数据库外还有批量操作和不完全的事务支持久化,脚本,单线程

使用内存存储的创建命令、读取命令、更新命令、删除为提升性能而设的多线程

Memcached键值之间的映射

键值缓存命令以及其他几个命令服务器

每个数据库可以包含多个表,每个表可以

SELECT.INSERT.UPDATE.DELETE.支持ACID性质(InnoDB),

MySQL关系数据库包含多个行;可以处理多个表的视图;支

函数、存储过程主从复制和主主复制

持空间和第三方扩展

每个数据库可以包含多个表,每个表可以

SELECT.INSERT.UPDATE、DELETE.支持ACID性质、主从复制、

PostgreSQL关系数据库包含多个行;可以处理多个表的视图;支

内置函数、自定义的存储过程由第三方支持的多主复制

持空间和第三方扩展,支持可定制类型

使用硬盘存储的每个数据库可以包含多个表,每个表可以创建命令、读取命令、更新命令、删除支持map-reduce操作,主

MongoDB

非关系文档存储包含多个无schema的BSON文档命令、条件查询命令等从复制,分片,空间索引

1.3.Redis应用场景★★★

1)热数据缓存(热点数据、热点页面)

2)队列(分布式爬虫、消息队列、秒杀)

3)排行榜(PK榜、土豪榜)

4)数据去重(爬虫列表去重)

5)最新列表(取最新N个数据的操作)

6)定时器、计数器(登录多久清除数据、多久之内能访问多少次)

1.4.Redis不适合的场景

1)数据量太大的不合适,成本太高

2)访问频率太低不合适,浪费资源

3)涉及复杂查询的不合适,简单的Key-Value存储

1.5.官方网站

1)英文官网:https://redis.io/

2)中文网站:http:〃/

1.6.安装Redis★★

1.5.1Windows系统

由于企业里面做Redis开发,99%都是Linux版的运用和安装,几乎不会涉及到Windows版。

而且Redis没有官方的Windows版本,但是微软开源技术团队(MicrosoftOpenTechgroup)开发和维

护着这个Win64的版本。更多信息请参考https:〃/MicrosoftArchive/redis。

Redisfor

windows.zip

1.5.2Ubuntu系统

1)使用apt命令安装

1.安装命令

jiaxing@atguigu:-$sudoaptinstallredis-server

2)使用make编译安装

1.安装命令

wgethttp://download.redis.io/releases/redis-4.0.10.tar.gz

tarxzfredis-4.0.10.tar.gz

cdredis-4.0.10

make

3)报错处理

E:无法获得锁/var/lib/dpkg/lock-open(11:Resourcetemporarilyunavailable)

E:无法锁定管理目录(/var/lib/dpkg/),是否有其他进程正占用它?

解决方法一:

jiaxing@atguigu:-$ps-aux|grepapt

root57650.01,01820415504?SN04:020:00apt-get-qq-d

找到最后一列以apt-get开头的进程

jiaxing@atguigu:-$sudokill-9该进程的PID

解决方法二:

sudorm/var/cache/apt/archives/lock

sudorm/var/lib/dpkg/lock

4)报错处理2

E:Sub-process/usr/bin/dpkgreturnedanerrorcode(1)

解决方法一:

sudomv/var/lib/dpkg/info/var/lib/dpkg/info.bak

sudomkdir/var/lib/dpkg/info

sudoaptupdate

sudoapt-finstallredis-server

sudomv/var/lib/dpkg/info/*/var/lib/dpkg/info.bak

sudorm-rf/var/lib/dpkg/info

sudomv/var/lib/dpkg/info.bak/var/lib/dpkg/info

1.7.运行Redis

1.启动Redis服务

jiaxing@atguigu:-$redis-server

2.启动Redis服务并指定配置文件

jiaxing@atguigu:~$sudoredis-server/etc/redis/redis.conf

3.启动Redis客户端

jiaxing@atguigu:~$redis-cli

4.查看Redis启动配置

jiaxing@atguigu:-$redis-cli-h

5.测试Redis服务器正常运行

:6379>ping

6.关闭Redis服务器

:6379>SHUTDOWN

1.8.基础知识与命令★

1.Redis-benchmark性能测试

2.Redis-check-rdb#检查并修复RDB文件

3.Redis-check-aof#检查并修复AOF文件

4.Select切换数据库(Redis默认有16个数据库,0-15)

5.DBSIZE查看当前数据库Key数量

6.Keys*查看当前数据库所有Key

7.FLUSHDB清空当前库

8.FLUSHALL清空所有库

1.9.默认启动后的五条警告★★

1.Warning:noconfigfilespecified,usingthedefaultconfig.Inordertospecifyaconfigfileuse

redis-server/path/to/redis.conf

没有指定启动配置文件,正在使用默认配置文件启动,如果需要配置可以使用redis-server

/path/to/redis.conf启动redis

2.Increasedmaximumnumberofopenfilesto10032(itwasoriginallysetto1024).

将最大文件打开数设置为10032,当前设置为1024

解决方案:

在终端执行ulimit-n10032

3.WARNING:TheTCPbacklogsettingof511cannotbeenforcedbecause

/proc/sys/net/core/somaxconnissettothelowervalueof128.

临时解决方法:(即下次启动还需要修改此值)

echo511>/proc/sys/net/core/somaxconn

永久解决方法:

将其写入/etc/sysctl.conf文件中。

net.core,somaxconn=2048

然后在终端中执行sysctl-p

baklog参数实际控制的是已经3次握手成功的还在acceptqueue的大小。

详细链接:https:〃blog,csdn.net/raintungli/article/detai1s/37913765

4.WARNINGovercommit_memoryissetto0!Backgroundsavemayfailunderlowmemorycondition.To

fixthisissueadd'vm.overcommit_memory=1'to/etc/sysctl.confandthenrebootorrunthe

command'sysctlvm.overcommit_memory=l'forthistotakeeffect.

overcommit_memory参数设置为0!在内存不足的情况下,后台程序save可能失败。建议在文件/etc/sysctl.conf

中将overcommit_memory修改为1。

overcommit_memory=0,表示内核将检杳是否有足够的可用内存供应用进程使用;如果有足够的可用内存,内存申请

允许;否则,内存申请失败,并把错误返回给应用进程。

overcommit_memory=l,表示内核允许分配所有的物理内存,而不管当前的内存状态如何。

临时解决方法:sysctlvm.overcommit_memory=l

永久解决方法:将vm.overcommitjnemory=1写入/etc/sysctl.conf文件中。

详细链接:hlIps:〃blog,csdn.rwl/whyco】d/arlicle/dclails/21388455

5.WARNINGyouhaveTransparentHugePages(THP)supportenabledinyourkernel.Thiswillcreate

latencyandmemoryusageissueswithRedis.Tofixthisissuerunthecommand'echonever>

/sys/kernel/mm/transparent_hugepage/enabled'asroot,andaddittoyour/etc/rc.localinorderto

retainthesettingafterareboot.RedismustberestartedafterTHPisdisabled.

使用的是透明大页,可能导致redis延迟和内存使用问题。执行echonever>

/sys/kernel/mm/transparent_hugepage/enabled修复该问题。

临时解决方法:

echonever>/sys/kernel/mm/transparent_hugepage/enabledo

永久解决方法:

将transparent_hugepage=never写入/etc/grub.conf文件中。

详细链接:http:〃www.cnblogs.com/kerrycode/archive/2015/07/23/4670931.html

简单来说内存可管理的最小单位是page,一个page通常是4kb,那1M内存就会有256个page,CPU通过内置的内存

管理单元管理page表记录。HugePages就是表示page的大小已超过4kb了,一般是2M到1G,它的出现主要是为了

管理超大内存。而THP就是管理HugePages的一个抽象层次,根据一些资料显示THP会影响性能,所以一般建议关

闭此功能。

1.10.RDM图形可视化界面软件

尚硅谷_RDM安装

与使用(Windows

2.Redis数据类型

2.1.Key关键字★★

2.1.1.常用命令

1.KEYS*:查看所有key

:6379>KEYS*

2.EXISTSkeyname:判断key是否存在

:6379>EXISTSmylist

3.MOVEkeydb:将key移动到指定db

:6379>MOVEmylist1

4.EXPIREkeyseconds:为key设置存活期

:6379>EXPIREatguigu9999

5.TTLkey:查看key还有多少秒过期,永不过期,-2已过期

:6379>TTLatguigu

6.TYPEkey:查看指定key的类型

:6379>TYPEatguigu

2.2.String(字符串)★★

2.2.1,什么是String类型

String是Redis最基本的类型,一个Key对应一个Value。Value最多可以是512M

String类型是二进制安全的。意思是Redis的String可以包含任何数据。比如JPG图片或者序列化的对象。

2.2.2.常用命令

设置键值SETkeyvalue

将字符串值value关联到key。如果key已经持有其他值,SET就覆写旧值,无视类型。

获取值GETkey

返回key所关联的字符串值。如果key不存在那么返回特殊值nil。

假如key储存的值不是字符串类型,返回一个错误,因为GET只能用于处理字符串值。

删除值DELkey

删除给定的一个或多个key,不存在的key会被忽略。

追力口值APPENDkeyvalue

如果key已经存在并且是一个字符串,APPEND命令将value追加到key原来的值的末尾。

如果key不存在,APPEND就简单地将给定key设为value,就像执行SETkeyvalue一样。

查看长度STRLENkey

返回key所储存的字符串值的长度。当key储存的不是字符串值时,返回一个错误。

将key增加1INCRkey

将key中储存的数字值增1,如果key不存在,那么key的值会先被初始化为0,然后再执行

INCR操作。

将key减少1DECRkey

将key中储存的数字值减1。如果key不存在,那么key的值会先被初始化为0,然后再执行

DECR操作。

将key增加指定值INCRBYkeyincrement

将key所储存的值加上增量increment。如果key不存在,那么key的值会先被初始化为0,

然后再执行INCRBY命令。

将key减少指定值DECRBYkeydecrement

将key所储存的值减去减量decrement。如果key不存在,那么key的值会先被初始化为0,

然后再执行DECRBY操作。

返回指定范围的值GETRANGEkeystartend

返回key中字符串值的子字符串,字符串的截取范围由start和end两个偏移量决定(包括start

和end在内)。负数偏移量表示从字符串最后开始计数,-1表示最后一个字符,-2表示倒数第二

个,以此类推。

设置指定范围的值SETRANGEkeyoffsetvalue

用value参数覆写(overwrite)给定key所储存的字符串值,从偏移量offset开始。不存在的key

当作空白字符串处理。

SETRANGE命令会确保字符串足够长以便将value设置在指定的偏移量上,如果给定key原来储存

的字符串长度比偏移量小(比如字符串只有5个字符长,但你设置的offset是10),那么原字符

和偏移量之间的空白将用零字节(zerobytes,"\x00")来填充。

设置键值并增加存活时间SETEXkeysecondsvalue

将值value关联到key,并将key的生存时间设为seconds(以秒为单位)。如果key已经存在,

SETEX命令将覆写旧值。

不存在时设置键值SETNXkeyvalue

将key的值设为value,当且仅当key不存在。若给定的key已经存在,则SETNX不做任何动

作。SETNX是[SETifNoteXistsJ(如果不存在,则SET)的简写。

批量设置键值MSETkeyvalue[keyvalue...]

同时设置一个或多个key-value对。

如果某个给定key已经存在,那么MSET会用新值覆盖原来的旧值,如果这不是你所希望的效果,请考虑使用

MSETNX命令:它只会在所有给定key都不存在的情况下进行设置操作。

MSET是一个原子性(atomic)操作,所有给定key都会在同一时间内被设置,某些给定key被更新而另一些给定

key没有改变的情况,不可能发生。

批量获取值MGETkey[key...]

返回所有(一个或多个)给定key的值。如果给定的key里面,有某个key不存在,那么这个key返回特殊值

nilo因此,该命令永不失败。

不存在时批量设置键值MSETNXkeyvalue[keyvalue...]

同时设置一个或多个key-value对,当且仅当所有给定key都不存在。

即使只有一个给定key已存在,MSETNX也会拒绝执行所有给定key的设置操作。

MSETNX是原子性的,因此它可以用作设置多个不同key表示不同字段(field)的唯一性逻辑对象(uniquelogic

object),所有字段要么全被设置,要么全不被设置。

返回值并设置键值GETSETkeyvalue

将给定key的值设为value,并返回key的旧值(oldvalue)。当key存在但不是字符串类型时,返回一个错

误。

2.3.List(列表)★★

2.3.1.什么是List类型

Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素导列表的头部(左边)或者尾

部(右边)。它的底层实际是个链表

2.3.2.常用命令

在头/尾部插入数据LPUSH/RPUSHkeyvalue

将一个或多个值value插入到列表key的表头

如果有多个value值,那么各个value值按从左到右的顺序依次插入到表头:比如说,对空列表mylist执行命

令LPUSHmylistabc.列表的值将是cba,这等同于原子性地执行LPUSHmylista、LPUSHmylistb和

LPUSHmylistc三个命令。

如果key不存在,一个空列表会被创建并执行LPUSH操作。

返回指定范围的元素LRANGEkeystartstop

返回列表key中指定区间内的元素,区间以偏移量start和stop指定。

下标(index)参数start和stop都以0为底,也就是说,以。表示列表的第一个元素,以1表示列表的第二个

元素,以此类推。

你也可以使用负数下标,以-1表示列表的最后一个元素,-2表示列表的倒数第二个元素,以此类推。

注意LRANGE命令和编程语言区间函数的区别

假如你有一个包含一百个元素的列表,对该列表执行LRANGElist010,结果是一个包含11个元素的列表,这表

明stop下标也在LRANGE命令的取值范围之内(闭区间),这和某些语言的区间函数可能不一致,比如Ruby的

Range.new、Array#slice和Python"Jrange()函数

超出范围的下标

超出范围的下标值不会引起错误。

如果start下标比列表的最大下标end(LLENlist减去1)还要大,那么LRANGE返回一个空列表。

如果stop下标比end下标还要大,Redis将stop的值设置为end。

在头/尾部移除数据LPOP/RPOPkey

移除并返回列表key的头元素。

返回指定下标的数据LINDEXkeyvalue

返回列表key中,下标为index的元素。

下标(index)参数start和stop都以0为底,也就是说,以8表示列表的第一个元素,以1表示列表的第二个

元素,以此类推。

你也可以使用负数下标,以-1表示列表的最后一个元素,-2表示列表的倒数第二个元素,以此类推。

如果key不是列表类型,返回一个错误。

返回列表数据长度LLENkey

返回列表key的长度。如果key不存在,则key被解释为一个空列表,返回0.

根据数量移除指定的值LREMkeycountvalue

根据参数count的值,移除列表中与参数value相等的元素。

count的值可以是以下几种:

count>0:从表头开始向表尾搜索,移除与value相等的元素,数量为count。

count<0:从表尾开始向表头搜索,移除与value相等的元素,数量为count的绝对值。

count=0:移除表中所有与value相等的值。

只保留范围内数据LTRIMkeystartstop

对一个列表进行修剪(trim),就是说,让.列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除。

举个例子,执行命令LTRIMlist02,表示只保留列表list的前三个元素,其余元素全部删除。

下标(index)参数start和stop都以0为底,也就是说,以0表示列表的第一个元素,以1表示列表的第二个

元素,以此类推。

你也可以使用负数下标,以-1表示列表的最后一个元素,-2表示列表的倒数第二个元素,以此类推。

从尾部移除并添加到指定头部RPOPLPUSHsourcedestination

命令RPOPLPUSH在一个原子时间内,执行以下两个动作:

将列表source中的最后一个元素(尾元素)弹出,并返回给客户端。

将source弹出的元素插入到列表destination,作为destination列表的的头元素。

举个例子,你有两个列表source和destination,source列表有元素a,b,c,destination列表有元素x,

V>z,执行RPOPLPUSHsourcedestination之后,source列表包含元素a,b,destination列表包含元

素c,x,y,z,并且元素c会被返回给客户端。

如果source不存在,值nil被返回,并且不执行其他动作。

如果source和destination相同,则列表中的表尾元素被移动到表头,并返回该元素,可以把这种特殊情况视作

列表的旋转(rotation)操作。

设置指定下标的值LSETkeyindexvalue

将列表key下标为index的元素的值设置为value。

当index参数超出范围,或对一个空列表(key不存在)进行LSET时,返回一个错误。

在指定值得前/后插入值LINSERTkeyBEFORE|AFTERpivotvalue

将值value插入到列表key当中,位于值pivot之前或之后。

当pivot不存在于列表key时,不执行任何操作。

当key不存在时,key被视为空列表,不执行任何操作。

2.4.Hash(哈希)

2.4.1.什么是Hash类型

Redishash是一"键值对集合。是一个string类型的field和value的映射表,hash特别适合用于存储对

象。

2.4.2.常用命令

设置单个键值HSETkeyfieldvalue

返回哈希表key中给定域field的值。

获取单个键值HGETkeyfield

将哈希表key中的域field的值设为value。如果key不存在,一个新的哈希表被创建并进行HSET操作。

设置多个键值HMSETkeyfieldvalue

返回哈希表key中,一个或多个给定域的值。如果给定的域不存在于哈希表,那么返回一个nil值。

因为不存在的key被当作一个空哈希表来处理,所以对一个不存在的key进行HMGET操作将返回一个只带有nil

值的表。

获取多个键值HMGETkeyfield

同时将多个field-value(域-值)对设置到哈希表key中。此命令会覆盖哈希表中已存在的域。

如果key不存在,一个空哈希表被创建并执行HMSET操作。

获取所有键值HGETALL

返回哈希表key中,所有的域和值。

在返回值里,紧跟每个域名(fieldname)之后是域的值(value),所以返回值的长度是哈希表大小的两倍。

返回指定键的长度HLENkey

返回哈希表key中域的数量。

判断键是否存在HEXISTSkeyfield

查看哈希表key中,给定域field是否存在。

获取所有键HKEYSkey

返回哈希表key中的所有域。

获取所有值HVALSkey

返回哈希表key中所有域的值。

2.5.Set(集合)

2.5.1,什么是Set类型

Redis的Set是string类型的无序集合。它是通过HashTable实现的,

2.5.2.常用命令

添加元素SADDkeymember

将一个或多个member元素加入到集合key当中,已经存在于集合的member元素将被忽略。

假如key不存在,则创建一个只包含member元素作成员的集合。当key不是集合类型时,返回一个错误。

返回key集合所有元素SMEMBERSkey

返回集合key中的所有成员。不存在的key被视为空集合。

查看元素是否在集合中SISMEMBERkeymember

判断member元素是否集合key的成员。

返回元素个数SCARDkey

返回集合key的基数(集合中元素的数量)。

删除元素SPOPkey[count]

移除并返回集合中的一个随机元素。

如果只想获取一个随机元素,但不想该元素从集合中被移除的话,可以使用SRANDMEMBER命令。

返回集合之间的差集SDIFFkey[key...]

返回一个集合的全部成员,该集合是所有给定集合之间的差集。不存在的key被视为空集。

返回集合之间的交集SINTERkey[key...]

返回一个集合的全部成员,该集合是所有给定集合的交集。不存在的key被视为空集。

当给定集合当中有一个空集时,结果也为空集(根据集合运算定律)。

返回集合之间的并集SUNIONkey[key...]

返回一个集合的全部成员,该集合是所有给定集合的并集。不存在的key被视为空集。

2.6.ZSet(有序集合)

2.6.1.什么是Zset类型

Rediszset和set一样也是string类型元素的集合,且不允许重复的成员。

不同的是每个元素都会关联一个double类型的分数。

redis正是通过分数来为集合中的成员进行从小到大的排序。zset的成员是唯一的,但分数(score)却可以重

复。

2.6.2.常用命令

增加元素ZADDkeyscoremember[scoremember...]

将一个或多个member元素及其score值加入到有序集key当中。

如果某个member已经是有序集的成员,那么更新这个member的score值,并通过重新插入这个member元素,

来保证该member在正确的位置上。

score值可以是整数值或双精度浮点数。

如果key不存在,则创建一个空的有序集并执行ZADD操作。

当key存在但不是有序集类型时,返回一个错误。

返回指定范围的元素ZRANGEkeystartstop[WITHSCORES]

返回有序集key中,指定区间内的成员。

其中成员的位置按score值递增(从小到大)来排序。

具有相同score值的成员按字典序(lexicographicalorder)来排列。

如果你需要成员按score值递减(从大到小)来排列,请使用ZREVRANGE命令。

下标参数start和stop都以0为底,也就是说,以9表示有序集第一个成员,以1表示有序集第二个成员,以

此类推。

你也可以使用负数下标,以-1表示最后一个成员,-2表示倒数第二个成员,以此类推。

超出范围的下标并不会引起错误。

比如说,当start的值比有序集的最大下标还要大,或是start>stop时,ZRANGE命令只是简单地返回一个空

列表。

另一方面,假如stop参数的值比有序集的最大下标还要大,那么Redis将stop当作最大下标来处理。

可以通过使用WITHSCORES选项,来让成员和它的score值-并返回,返回列表以valuel,scorel,

valueN,scoreN的格式表示。

客户端库可能会返回一些更复杂的数据类型,比如数组、元组等。

返回指定分数范围的元素ZRANGEBYSCOREkeyminmax[WITHSCORES][LIMIToffsetcount]

返回有序集key中,所有score值介于min和max之间(包括等于min或max)的成员。有序集成员按score值

递增(从小到大)次序排列。

具有相同score值的成员按字典序(lexicographicalorder)来排列(该属性是有序集提供的,不需要额外的计算)。

可选的LIMIT参数指定返回结果的数量及区间(就像SQL中的SELECTLIMIToffset,count),注意当offset很

大时,定位offset的操作可能需要遍历整个有序集,此过程最坏复杂度为0(N)时间。

可选的WITHSCORES参数决定结果集是单单返回有序集的成员,还是将有序集成员及其score值…起返回。

返回元素的个数ZCARDkey

返回有序集key的基数。

删除指定元素ZREMkeymember[member...]

移除有序集key中的一个或多个成员,不存在的成员将被忽略。当key存在但不是有序集类型时,返回一个错误。

返回指定分数区间的元素个数ZCOUNTkeyminmax

返PI有序集key中,score值在min和max之间(默认包括score值等于min或max)的成员的数量。

返回指定元素的下标ZRANKkeymember

返回有序集key中成员member的排名。其中有序集成员按score值递增(从小到大)顺序排列。排名以0为底,

也就是说,score值最小的成员排名为。。

返回指定元素的分数ZSCOREkeymember

返PI有序集key中,成员member的score值。如果member元素不是有序集key的成员,或key不存在,返

回nilo

倒序返回指定元素的下标ZREVRANKkeymember

返回有序集key中成员member的排名。其中有序集成员按score值递减(从大到小)排序。排名以0为底,也就

是说,score值最大的成员排名为0

倒序返回指定范围的元素ZREVRANGEkeystartstop[WITHSCORES]

返回有序集key中,指定区间内的成员。其中成员的位置按score值递减(从大到小)来排列。

倒序返回指定分数范围的元素ZREVRANGEBYSCOREkeymaxmin[WITHSCORES][LIMIToffsetcount]

返回有序集key中,score值介于max和min之间(默认包括等于max或min)的所有的成员。有序集成员按

score值递减(从大到小)的次序排列。

3.Redis配置文件(version4.0.10)

3.1.查看配置文件位置

1)Locate命令

jiaxing@atguigu:~$locateredis.conf

2)Whereis命令

jiaxing@atguigu:-$whereisredis

3.2.UNITS单位

井关于单位的注释:当需要配置内存大小时,可以指定单位

#通常可以配置为lk5GB4M或以下形式:

#

#1k=>1000bytes

#lkb=>1024bytes

#lm=>1000000bytes

#Imb=>1024*1024bytes

#lg=>1000000000bytes

#Igb=>1024^1024*1024bytes

#

#单位不区分大小写,所以:LGB1GB1GB都是一样的

3.3.INCLUDES包含

##################################INCLUDES###################################

#在这里配置包含一个或多个conf文件.适用于多个red”通用的配置,但有部分需要自定义配置

#的redts服务器时使用,IncLude可以配置包含其它文件,请有选择的使用

#

#提示:'incLudes'配置不会被命令^CONFIGREWRITE'或哨兵模式重写,由于Redts会使用

#最后一次配置作为实际配置,所以最好在con于文件的开头就配置好Includes信息

#

井相对应的,如果你有兴趣重写配置文件,可以将Includes配置放到最后一行

#

#incLude/path/to/LocaL.conf

#incLude/path/to/other.conf

3.4.NETWORK网络★★

1.Bind

#默认情况下,redis在server上所有有效的网络接口上监听客户端连接。

#你如果只想让它在一个网络接口上监听,那你就绑定一个工P或者多个1P。

2.Port

#监听端口号,默认为6379,如果你设为0,redis将不在socket上监听任何客户端连接。

3.Tcp-backlog

#设置tcp的backlog,backlog其实是一个连接队列,backlog队列总和=未完成三次握手队列+已经完成三次

握手队列。

#在高并发环境下你需要一个高backlog值来避免慢客户端连接问题。注意Linux内核会将这个值减小到

/proc/sys/net/core/somaxconn的值,所以需要确认增大somaxconn和tcp_max_syn_backlog两个值来达到想

要的效果

4.Timeout

#客户端和Redis服务端的连接超时时间,默认是0,表示永不超时。

5.Tcp-keepalive

如果值非0,单位是秒,表示将周期性的使用S0_KEEPAL1VE检测客户端是否还处于健康状态,避免服务器一直阻塞,

官方给出的建议值是60秒

3.5.GENERAL通用★★

1.Deamonize

如果值是“yes”,则启动服务的时候是后台守护进程形式,如果值是"no”,则相反

2.Supervised

可以通过upstart和systemd管理Redis守护进程,这个参数是和具体的操作系统相关的。

3.Pidfile

配置后台运行时,redis会生成pid文件,如果不进行配置,默认放置在/var/run/redis/redis-server.pid下。运

行多个redis服务时,需要指定不同的pid文件和端口

4.Loglevel

配置记录log的等级。分为四个等级,debug\verbose\notice\warning

5.Logfile

配置log文件地址,设置为空时,将日志打印在屏幕上。如果设置为空且设置了后台运行,则将日志发送至/dev/null

6.Syslog-enabled

要想把日志记录到系统日志,就把它改成yes,

也可以可选择性的更新其他的syslog参数以达到你的要求

7.Syslog-ident

设置syslog的identity,即syslog的日志以什么内容开头

8.Syslog-facility

设置syslog的设备,必须是USER或者是LOCAL0-LOCAL7之间的值

9.Databases

设置数据库的数目。

默认数据库是DB0,你可以在每个连接上使用select<dbid>命令选择一个不同的数据库,

但是dbid必须是一个介于0到databasees-1之间的值

10.Always-show-logo

redis启动时是否显示Logo

3.6.SNAPSHOTTING快照

1.Save

RDB是整个内存的压缩过的Snapshot,RDB的数据结构,可以配置复合的快照触发条件,

默认

save9001

save30010

save6010000

2.stop-writes-on-bgsave-error

当持久化出现错误时,是否依然继续进行工作,是否终止所有的客户端write请求。默认设置“yes”表示终止,一旦

snapshot数据保存故障,那么此server为只读服务。如果为“no",那么此次snapshot将失败,但下•次snapshot

不会受到影响,不过如果出现故障,数据只能恢复到〃最近一个成功点〃

3.rdbcompression

在进行数据镜像备份时,是否启用rdb文件压缩手段,默认为yes。压缩可能需要额外的cpu开支,不过这能够有效

的减小rdb文件的大,有利于存储/备份/传输/数据恢复

4.rdbchecksum

在存储快照后,还可以让redis使用CRC64算法来进行数据校验,但是这样做会增加大约10%的性能消耗,如果希望

获取到最大的性能提升,可以关闭此功能

5.dbfilename

RDB备份的文件名

6.dir

redis的工作目录。redis会把备份文件也放入到这个工作目录

3.7.R印LICATION复制

3.8.SECURITY安全★★

1.查看数据库密码

:6379>configgetrequirepass

2,配置数据库密码

:6379>configsetrequirepass666666

3.输入密码

:6379>auth666666

3.9.CLIENTS用户★★

1.Maxclients

限制同时连接的客户端数量。超过数量将不再接受新的请求并返回错误信息

3.10.MEMORYMANAGEMENT内存管理★★★

1.Maxmemort

设置redis能够使用的最大内存。当内存满了的时候,根据maxmemoi^y-policy进行删除key,当无法再删除时,返回

错误信息

2.Maxmemort-policy

内存删除规则。默认是noeviction方式

(1)volatile-lru:使用LRU算法移除key,只对设置了过期时间的键

(2)allkeys-lru:使用LRU算法移除key

(3)volatile-lfu:使用LFU算法移除key,只对设置了过期时间的键

(4)allkeys-lfu:使用LFU算法移除key

(5)volatile-random:在过期集合中移除随机的key,只对设置了过期时间的键

(6)allkeys-random:移除随机的key

(7)volatile-ttl:移除那些TTL值最小的key,即那些最近要过期的key

(8)noeviction:不进行移除。针对写操作,只是返回错误信息

LRU:LeastRecentlyUsed,最近最少使用。判断最近被使用的时间,目前最远的数据优先被淘汰。

LFU:LeastFrequentlyUsed,最不经常使用。在一段时间内,数据被使用次数最少的,优先被淘汰。

#使用DEBUGOBJECT<key>查看LRU时间信息

#使用O

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论