赞
踩
作为一个稀有的Java妹子,所写的所有博客都只是当作自己的笔记,留下证据自己之前是有用心学习的~哈哈哈哈(如果有不对的地方,也请大家指出,不要悄悄咪咪的不告诉我)
1.redis是一种可以高效存取的数据库,支持多种数据结构,比如字符串、集合、hash等等。
2.redis是把数据存放在内存里,从而使得数据的读写都是发生在内存里,速度十分的快,然后通过一定的机制持久化到磁盘。
3.虽然redis被叫做数据库,但是与mysql这种关系型数据库不同,redis的读写不是通过sql,而是通过其独有的方法设置的,所以redis也被成为是nosql数据库,还有许多nosql数据库,比如mongodb,memcached等等。
4.业务场景里有很多可以使用redis,比如点赞数,关注列表,粉丝列表等热点数据,还可以用来做分布式锁。
这里就跳过下载,可以自行去redis官网下载,下载后直接解压就可以了。
redis的配置文件是redis.config,打开配置文件,可以看到以下密密麻麻的属性值
################################# GENERAL ##################################### # 默认情况下 redis 不是作为守护进程运行的,如果你想让它在后台运行,你就把它改成 yes。 # 当redis作为守护进程运行的时候,它会写一个 pid 到 /var/run/redis.pid 文件里面。 daemonize no # 当redis作为守护进程运行的时候,它会把 pid 默认写到 /var/run/redis.pid 文件里面, # 但是你可以在这里自己制定它的文件位置。 pidfile /var/run/redis_6379.pid # 定义日志级别。 # 可以是下面的这些值: # debug (适用于开发或测试阶段) # verbose (many rarely useful info, but not a mess like the debug level) # notice (适用于生产环境) # warning (仅仅一些重要的消息被记录) loglevel notice # 指定日志文件的位置 logfile "" # 要想把日志记录到系统日志,就把它改成 yes, # 也可以可选择性的更新其他的syslog 参数以达到你的要求 # syslog-enabled no # 设置 syslog 的 identity。 # syslog-ident redis # 设置 syslog 的 facility,必须是 USER 或者是 LOCAL0-LOCAL7 之间的值。 # syslog-facility local0 # 设置数据库的数目。 # 默认数据库是 DB 0,你可以在每个连接上使用 select <dbid> 命令选择一个不同的数据库, # 但是 dbid 必须是一个介于 0 到 databasees - 1 之间的值 databases 16 ################################## NETWORK ##################################### # 默认情况下,redis 在 server 上所有有效的网络接口上监听客户端连接。 # 你如果只想让它在一个网络接口上监听,那你就绑定一个IP或者多个IP。 # # 示例,多个IP用空格隔开: # # bind 192.168.1.100 10.0.0.1 # bind 127.0.0.1 bind 0.0.0.0 # 监听端口号,默认为 6379,如果你设为 0 ,redis 将不在 socket 上监听任何客户端连接。 port 6379 # TCP 监听的最大容纳数量 # # 在高并发的环境下,你需要把这个值调高以避免客户端连接缓慢的问题。 # Linux 内核会一声不响的把这个值缩小成 /proc/sys/net/core/somaxconn 对应的值, # 所以你要修改这两个值somaxconn and tcp_max_syn_backlog才能达到你的预期。 tcp-backlog 511 # 指定在一个 client 空闲多少秒之后关闭连接(0 就是不管它) timeout 0 ################################ SNAPSHOTTING ################################ # # 存 DB 到磁盘: # # 格式:save <间隔时间(秒)> <写入次数> # # 根据给定的时间间隔和写入次数将数据保存到磁盘 # # 下面的例子的意思是: # 900 秒内如果至少有 1 个 key 的值变化,则保存 # 300 秒内如果至少有 10 个 key 的值变化,则保存 # 60 秒内如果至少有 10000 个 key 的值变化,则保存 # # 注意:你可以注释掉所有的 save 行来停用保存功能。 # 也可以直接一个空字符串来实现停用: # save "" save 900 1 save 300 10 save 60 10000 # 默认情况下,如果 redis 最后一次的后台保存失败,redis 将停止接受写操作, # 这样以一种强硬的方式让用户知道数据不能正确的持久化到磁盘, # 否则就会没人注意到灾难的发生。 # # 如果后台保存进程重新启动工作了,redis 也将自动的允许写操作。 # # 然而你要是安装了靠谱的监控,你可能不希望 redis 这样做,那你就改成 no 好了。 stop-writes-on-bgsave-error yes # 是否在 dump .rdb 数据库的时候使用 LZF 压缩字符串 # 默认都设为 yes # 如果你希望保存子进程节省点 cpu ,你就设置它为 no , # 不过这个数据集可能就会比较大 rdbcompression yes # 是否校验rdb文件 rdbchecksum yes # 设置 dump 的文件位置 dbfilename dump.rdb # 工作目录 # 例如上面的 dbfilename 只指定了文件名, # 但是它会写入到这个目录下。这个配置项一定是个目录,而不能是文件名。 dir ./ ################################## SECURITY ################################### # 设置redis的连接密码,默认是没有密码的,但是实际中是需要设置的 # requirepass foobared ################################### CLIENTS #################################### # 设置同时连接的最大客户端数。默认情况下此限制设置为10000个客户端 # 一旦达到最大限制,redis 将关闭所有的新连接 # 并发送一个‘max number of clients reached’的错误。 # maxclients 10000 ############################## MEMORY MANAGEMENT ################################ # 如果你设置了这个值,当缓存的数据容量达到这个值, redis 将根据你选择的 # eviction 策略来移除一些 keys。 # 如果 redis 不能根据策略移除 keys ,或者是策略被设置为 ‘noeviction’, # redis 将开始响应错误给命令,如 set,lpush 等等, # 并继续响应只读的命令,如 get # maxmemory <bytes> ############################## APPEND ONLY MODE ############################### # 默认情况下,Redis在磁盘上异步转储数据集。这个模式是在很多应用程序中都足够好,但是Redis进程 #有问题,或者断电可能会导致几分钟的写操作丢失(取决于配置的保存点)。Append Only文件是另一种 #持久性模式,它提供更耐用。例如,使用默认的数据fsync策略(请参阅后面的配置文件)Redis在戏剧 #性的事件,比如服务器断电,或者如果发生了什么事情Redis进程本身会出错,但操作系统是仍然正常运 #行。可以同时启用AOF和RDB持久性,而不会出现问题。如果在启动时启用了AOF,Redis将加载AOF,即 #文件有更好的耐久性保证。 appendonly no # 设置存放aof的文件名 appendfilename "appendonly.aof" # 配置aof持久化数据策略, # always:每次有数据修改发生时都会写入AOF文件(安全但是费时) # everysec:每秒钟同步一次,该策略为AOF的缺省策略。 # no:从不同步。高效但是数据不会被持久化。 # appendfsync always appendfsync everysec # appendfsync no # 主进程写入aof文件和当aof文件过大,自动重写两者都发生的时候,因为重写是把旧的文件重新 #写到新的文件中,涉及大量的磁盘操作,就会阻塞主线程的读写,该参数设为yes就是不同步数据, #这样就可以保证redis的读写没有延迟,但可能会出现数据丢失的情况;设置为no就是当上述情况 #发生会有一点延迟,不过不会出现丢失数据的情况。 no-appendfsync-on-rewrite no # 设置aof文件重写的条件 auto-aof-rewrite-percentage 100 auto-aof-rewrite-min-size 64mb #aof文件有时会出现末尾被截断的情况,设置该参数为yes表示当启动redis加载aof文件时,不会报错,会一直加载到被截断的位置的所有数据到内存,设为no就是不能启动redis,必须使用“redis check AOF”实用程序修复AOF文件 aof-load-truncated yes # When rewriting the AOF file, Redis is able to use an RDB preamble in the # AOF file for faster rewrites and recoveries. When this option is turned # on the rewritten AOF file is composed of two different stanzas: # # [RDB file][AOF tail] # # When loading Redis recognizes that the AOF file starts with the "REDIS" # string and loads the prefixed RDB file, and continues loading the AOF # tail. aof-use-rdb-preamble yes ############################### LUA SCRIPTING ############################### # lua脚本执行的最长时间,其设置为0或负值,以便在没有警告的情况下无限执行。 lua-time-limit 5000 ################################ REDIS CLUSTER ############################### # 普通的Redis实例不能是Redis集群的一部分;需要将redis加入集群可以开启该属性 # cluster-enabled yes # 每个群集节点都有一个群集配置文件。这个文件不是打算手工编辑。它由Redis节点创建和更新。 #每个Redis集群节点都需要不同的集群配置文件。确保在同一系统中运行的实例没有重叠的群集配置文件名。 # cluster-config-file nodes-6379.conf # 节点多久没被连上将其设定为失效状态 # cluster-node-timeout 15000 # 当主节点出现故障时,设置副本节点进行故障转移的有效因子 # 为了获得最大的可用性,可以设置副本有效性因子值为0,这意味着副本将始终尝试故障转移不管他们最后一次和主人互动。 #零是唯一能够保证当所有分区恢复时群集将始终能够继续。 # cluster-replica-validity-factor 10 # Cluster replicas are able to migrate to orphaned masters, that are masters # that are left without working replicas. This improves the cluster ability # to resist to failures as otherwise an orphaned master can't be failed over # in case of failure if it has no working replicas. # # Replicas migrate to orphaned masters only if there are still at least a # given number of other working replicas for their old master. This number # is the "migration barrier". A migration barrier of 1 means that a replica # will migrate only if there is at least 1 other working replica for its master # and so forth. It usually reflects the number of replicas you want for every # master in your cluster. # # Default is 1 (replicas migrate only if their masters remain with at least # one replica). To disable migration just set it to a very large value. # A value of 0 can be set but is useful only for debugging and dangerous # in production. # # cluster-migration-barrier 1 # By default Redis Cluster nodes stop accepting queries if they detect there # is at least an hash slot uncovered (no available node is serving it). # This way if the cluster is partially down (for example a range of hash slots # are no longer covered) all the cluster becomes, eventually, unavailable. # It automatically returns available as soon as all the slots are covered again. # # However sometimes you want the subset of the cluster which is working, # to continue to accept queries for the part of the key space that is still # covered. In order to do so, just set the cluster-require-full-coverage # option to no. # # cluster-require-full-coverage yes # 如果将此选项设置为“是”,则会阻止副本尝试对其进行故障转移 # cluster-replica-no-failover no ################################## SLOW LOG ################################### # 慢日志时间设置,执行时间超过的会记录到慢日志中 slowlog-max-len 128 ################################ LATENCY MONITOR ############################## # Redis延迟监控子系统对不同的操作进行采样在运行时,以便收集与Redis实例的延迟。 # 默认情况下,延迟监视被禁用,因为大多数情况下不需要它 latency-monitor-threshold 0 ############################# LAZY FREEING #################################### # redis的删除有两种,一种是阻塞的,另一种是非阻塞的。默认的是阻塞的,del。在使用del删除数据时,服务器会把与之相关的都删除掉,这段时间是阻塞的,如果关联的数据很多可能会需要几秒的时间;非阻塞的有UNLINK等。 lazyfree-lazy-eviction no lazyfree-lazy-expire no lazyfree-lazy-server-del no replica-lazy-flush no
安装好后,进入解压后的目录,然后使用redis-server命令启动redis,启动后服务端就会显示以下的信息:注意:如果修改了配置文件,启动时一定要指定配置文件,不然修改的配置都不起效,redis-server redis.conf
然后再另外打开一个连接终端,输入redis-cli,连接刚才启动好的redis:
下一篇将会介绍redis的数据结构以及对应的命令。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。