linux怎么查看本机内存大小
236
2022-09-01
Redis 7.0 正式发布,新增近 50 个新命令
Redis 7.0 现已正式发布,该版本已经开发了将近一年,之前经历了三个候选版本。现如今,开发团队认为它已经足够稳定,可以应用于生产。
简而言之,Redis 7.0 几乎包括了对各个方面的增量改进。其中最值得注意的是 Redis Functions、ACLv2、command introspection 和 Sharded Pub/Sub,它们代表了基于用户反馈和生产经验教训的现有功能的重大演变。
7.0 版添加了近 50 个新命令和选项来支持这种演变并扩展 Redis 的现有功能。
例如,位图、列表、集合、排序集合和流数据类型都添加了支持其数据管理用例的功能。此外,缓存语义已扩展为支持 existential 和 comparative modifiers。
公告指出,“虽然面向用户的功能很容易吹嘘,但这个版本中真正的 unsung heroes 其实是努力使 Redis 更高效、更稳定和更精简”。
开发人员的大部分精力都投入到了通过关注 Redis 相对于它使用的资源的性能来提高 Redis 的操作效率。
Redis 7.0 对其管理的几乎每个子系统都进行了多项改进,包括内存、计算、网络和存储。虽然有些优化是默认启用的,但其他优化可能需要配置。
有关详细信息,可参阅 redis.conf 文件中的内联文档:
"appendonly.aof"# For convenience, Redis stores all persistent append-only files in a dedicated# directory. The name of the directory is determined by the appenddirname# configuration parameter.appenddirname "appendonlydir"# The fsync() call tells the Operating System to actually write data on disk# instead of waiting for more data in the output buffer. Some OS will really flush# data on disk, some other OS will just try to do it ASAP.## Redis supports three different modes:## no: don't fsync, just let the OS flush the data when it wants. Faster.# always: fsync after every write to the append only log. Slow, Safest.# everysec: fsync only one time every second. Compromise.## The default is "everysec", as that's usually the right compromise between# speed and data safety. It's up to you to understand if you can relax this to# "no" that will let the operating system flush the output buffer when# it wants, for better performances (but if you can live with the idea of# some data loss consider the default persistence mode that's snapshotting),# or on the contrary, use "always" that's very slow but a bit safer than# everysec.## More details please check the following article:# If unsure, use "everysec".# appendfsync alwaysappendfsync everysec# appendfsync no# When the AOF fsync policy is set to always or everysec, and a background# saving process (a background save or AOF log background rewriting) is# performing a lot of I/O against the disk, in some Linux configurations# Redis may block too long on the fsync() call. Note that there is no fix for# this currently, as even performing fsync in a different thread will block# our synchronous write(2) call.## In order to mitigate this problem it's possible to use the following option# that will prevent fsync() from being called in the main process while a# BGSAVE or BGREWRITEAOF is in progress.## This means that while another child is saving, the durability of Redis is# the same as "appendfsync none". In practical terms, this means that it is# possible to lose up to 30 seconds of log in the worst scenario (with the# default Linux settings).## If you have latency problems turn this to "yes". Otherwise leave it as# "no" that is the safest pick from the point of view of durability.no-appendfsync-on-rewrite no# Automatic rewrite of the append only file.# Redis is able to automatically rewrite the log file implicitly calling# BGREWRITEAOF when the AOF log size grows by the specified percentage.## This is how it works: Redis remembers the size of the AOF file after the# latest rewrite (if no rewrite has happened since the restart, the size of# the AOF at startup is used).## This base size is compared to the current size. If the current size is# bigger than the specified percentage, the rewrite is triggered. Also# you need to specify a minimal size for the AOF file to be rewritten, this# is useful to avoid rewriting the AOF file even if the percentage increase# is reached but it is still pretty small.## Specify a percentage of zero in order to disable the automatic AOF# rewrite feature.auto-aof-rewrite-percentage 100auto-aof-rewrite-min-size 64mb# An AOF file may be found to be truncated at the end during the Redis# startup process, when the AOF data gets loaded back into memory.# This may happen when the system where Redis is running# crashes, especially when an ext4 filesystem is mounted without the# data=ordered option (however this can't happen when Redis itself# crashes or aborts but the operating system still works correctly).## Redis can either exit with an error when this happens, or load as much# data as possible (the default now) and start if the AOF file is found# to be truncated at the end. The following option controls this behavior.## If aof-load-truncated is set to yes, a truncated AOF file is loaded and# the Redis server starts emitting a log to inform the user of the event.# Otherwise if the option is set to no, the server aborts with an error# and refuses to start. When the option is set to no, the user requires# to fix the AOF file using the "redis-check-aof" utility before to restart# the server.## Note that if the AOF file will be found to be corrupted in the middle# the server will still exit with an error. This option only applies when# Redis will try to read more data from the AOF file but not enough bytes# will be found.aof-load-truncated yes# Redis can create append-only base files in either RDB or AOF formats. Using# the RDB format is always faster and more efficient, and disabling it is only# supported for backward compatibility purposes.aof-use-rdb-preamble yes# Redis supports recording timestamp annotations in the AOF to support restoring# the data from a specific point-in-time. However, using this capability changes# the AOF format in a way that may not be compatible with existing AOF parsers.aof-timestamp-enabled no################################ SHUTDOWN ###################################### Maximum time to wait for replicas when shutting down, in seconds.## During shut down, a grace period allows any lagging replicas to catch up with# the latest replication offset before the master exists. This period can# prevent data loss, especially for deployments without configured disk backups.## The 'shutdown-timeout' value is the grace period's duration in seconds. It is# only applicable when the instance has replicas. To disable the feature, set# the value to 0.## shutdown-timeout 10# When Redis receives a SIGINT or SIGTERM, shutdown is initiated and by default# an RDB snapshot is written to disk in a blocking operation if save points are configured.# The options used on signaled shutdown can include the following values:# default: Saves RDB snapshot only if save points are configured.# Waits for lagging replicas to catch up.# save: Forces a DB saving operation even if no save points are configured.# nosave: Prevents DB saving operation even if one or more save points are configured.# now: Skips waiting for lagging replicas.# force: Ignores any errors that would normally prevent the server from exiting.## Any combination of values is allowed as long as "save" and "nosave" are not set simultaneously.# Example: "nosave force now"## shutdown-on-sigint default# shutdown-on-sigterm default################ NON-DETERMINISTIC LONG BLOCKING COMMANDS ###################### Maximum time in milliseconds for EVAL scripts, functions and in some cases# modules' commands before Redis can start processing or rejecting other clients.## If the maximum execution time is reached Redis will start to reply to most# commands with a BUSY error.## In this state Redis will only allow a handful of commands to be executed.# For instance, SCRIPT KILL, FUNCTION KILL, SHUTDOWN NOSAVE and possibly some# module specific 'allow-busy' commands.## SCRIPT KILL and FUNCTION KILL will only be able to stop a script that did not# yet call any write commands, so SHUTDOWN NOSAVE may be the only way to stop# the server in the case a write command was already issued by the script when# the user doesn't want to wait for the natural termination of the script.## The default is 5 seconds. It is possible to set it to 0 or a negative value# to disable this mechanism (uninterrupted execution). Note that in the past# this config had a different name, which is now an alias, so both of these do# the same:# lua-time-limit 5000# busy-reply-threshold 5000################################ REDIS CLUSTER ################################ Normal Redis instances can't be part of a Redis Cluster; only nodes that are# started as cluster nodes can. In order to start a Redis instance as a# cluster node enable the cluster support uncommenting the following:## cluster-enabled yes# Every cluster node has a cluster configuration file. This file is not# intended to be edited by hand. It is created and updated by Redis nodes.# Every Redis Cluster node requires a different cluster configuration file.# Make sure that instances running in the same system do not have# overlapping cluster configuration file names.## cluster-config-file nodes-6379.conf# Cluster node timeout is the amount of milliseconds a node must be unreachable# for it to be considered in failure state.# Most other internal time limits are a multiple of the node timeout.## cluster-node-timeout 15000# The cluster port is the port that the cluster bus will listen for inbound connections on. When set # to the default value, 0, it will be bound to the command port + 10000. Setting this value requires # you to specify the cluster bus port when executing cluster meet.# cluster-port 0# A replica of a failing master will avoid to start a failover if its data# looks too old.## There is no simple way for a replica to actually have an exact measure of# its "data age", so the following two checks are performed:## 1) If there are multiple replicas able to failover, they exchange messages# in order to try to give an advantage to the replica with the best# replication offset (more data from the master processed).# Replicas will try to get their rank by offset, and apply to the start# of the failover a delay proportional to their rank.## 2) Every single replica computes the time of the last interaction with# its master. This can be the last ping or command received (if the master# is still in the "connected" state), or the time that elapsed since the# disconnection with the master (if the replication link is currently down).# If the last interaction is too old, the replica will not try to failover# at all.## The point "2" can be tuned by user. Specifically a replica will not perform# the failover if, since the last interaction with the master, the time# elapsed is greater than:## (node-timeout * cluster-replica-validity-factor) + repl-ping-replica-period## So for example if node-timeout is 30 seconds, and the cluster-replica-validity-factor# is 10, and assuming a default repl-ping-replica-period of 10 seconds, the# replica will not try to failover if it was not able to talk with the master# for longer than 310 seconds.## A large cluster-replica-validity-factor may allow replicas with too old data to failover# a master, while a too small value may prevent the cluster from being able to# elect a replica at all.## For maximum availability, it is possible to set the cluster-replica-validity-factor# to a value of 0, which means, that replicas will always try to failover the# master regardless of the last time they interacted with the master.# (However they'll always try to apply a delay proportional to their# offset rank).## Zero is the only value able to guarantee that when all the partitions heal# the cluster will always be able to continue.## 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 or# set cluster-allow-replica-migration to 'no'.# A value of 0 can be set but is useful only for debugging and dangerous# in production.## cluster-migration-barrier 1# Turning off this option allows to use less automatic cluster configuration.# It both disables migration to orphaned masters and migration from masters# that became empty.## Default is 'yes' (allow automatic migrations).## cluster-allow-replica-migration yes# By default Redis Cluster nodes stop accepting queries if they detect there# is at least a 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# This option, when set to yes, prevents replicas from trying to failover its# master during master failures. However the replica can still perform a# manual failover, if forced to do so.## This is useful in different scenarios, especially in the case of multiple# data center operations, where we want one side to never be promoted if not# in the case of a total DC failure.## cluster-replica-no-failover no# This option, when set to yes, allows nodes to serve read traffic while the# cluster is in a down state, as long as it believes it owns the slots.## This is useful for two cases. The first case is for when an application# doesn't require consistency of data during node failures or network partitions.# One example of this is a cache, where as long as the node has the data it# should be able to serve it.## The second use case is for configurations that don't meet the recommended# three shards but want to enable cluster mode and scale later. A# master outage in a 1 or 2 shard configuration causes a read/write outage to the# entire cluster without this option set, with it set there is only a write outage.# Without a quorum of masters, slot ownership will not change automatically.## cluster-allow-reads-when-down no# This option, when set to yes, allows nodes to serve pubsub shard traffic while# the cluster is in a down state, as long as it believes it owns the slots.## This is useful if the application would like to use the pubsub feature even when# the cluster global stable state is not OK. If the application wants to make sure only# one shard is serving a given channel, this feature should be kept as yes.## cluster-allow-pubsubshard-when-down yes# Cluster link send buffer limit is the limit on the memory usage of an individual# cluster bus link's send buffer in bytes. Cluster links would be freed if they exceed# this limit. This is to primarily prevent send buffers from growing unbounded on links# toward slow peers (E.g. PubSub messages being piled up).# This limit is disabled by default. Enable this limit when 'mem_cluster_links' INFO field# and/or 'send-buffer-allocated' entries in the 'CLUSTER LINKS` command output continuously increase.# Minimum limit of 1gb is recommended so that cluster link buffer can fit in at least a single# PubSub message by default. (client-query-buffer-limit default value is 1gb)## cluster-link-sendbuf-limit 0 # Clusters can configure their announced hostname using this config. This is a common use case for # applications that need to use TLS Server Name Indication (SNI) or dealing with DNS based# routing. By default this value is only shown as additional metadata in the CLUSTER SLOTS# command, but can be changed using 'cluster-preferred-endpoint-type' config. This value is # communicated along the clusterbus to all nodes, setting it to an empty string will remove # the hostname and also propagate the removal.## cluster-announce-hostname ""# Clusters can advertise how clients should connect to them using either their IP address,# a user defined hostname, or by declaring they have no endpoint. Which endpoint is# shown as the preferred endpoint is set by using the cluster-preferred-endpoint-type# config with values 'ip', 'hostname', or 'unknown-endpoint'. This value controls how# the endpoint returned for MOVED/ASKING requests as well as the first field of CLUSTER SLOTS. # If the preferred endpoint type is set to hostname, but no announced hostname is set, a '?' # will be returned instead.## When a cluster advertises itself as having an unknown endpoint, it's indicating that# the server doesn't know how clients can reach the cluster. This can happen in certain # networking situations where there are multiple possible routes to the node, and the # server doesn't know which one the client took. In this case, the server is expecting# the client to reach out on the same endpoint it used for making the last request, but use# the port provided in the response.## cluster-preferred-endpoint-type ip# In order to setup your cluster make sure to read the documentation# available at web site.########################## CLUSTER DOCKER/NAT support ######################### In certain deployments, Redis Cluster nodes address discovery fails, because# addresses are NAT-ted or because ports are forwarded (the typical case is# Docker and other containers).## In order to make Redis Cluster working in such environments, a static# configuration where each node knows its public address is needed. The# following four options are used for this scope, and are:## * cluster-announce-ip# * cluster-announce-port# * cluster-announce-tls-port# * cluster-announce-bus-port## Each instructs the node about its address, client ports (for connections# without and with TLS) and cluster message bus port. The information is then# published in the header of the bus packets so that other nodes will be able to# correctly map the address of the node publishing the information.## If cluster-tls is set to yes and cluster-announce-tls-port is omitted or set# to zero, then cluster-announce-port refers to the TLS port. Note also that# cluster-announce-tls-port has no effect if cluster-tls is set to no.## If the above options are not used, the normal Redis Cluster auto-detection# will be used instead.## Note that when remapped, the bus port may not be at the fixed offset of# clients port + 10000, so you can specify any port and bus-port depending# on how they get remapped. If the bus-port is not set, a fixed offset of# 10000 will be used as usual.## Example:## cluster-announce-ip 10.1.1.5# cluster-announce-tls-port 6379# cluster-announce-port 0# cluster-announce-bus-port 6380################################## SLOW LOG #################################### The Redis Slow Log is a system to log queries that exceeded a specified# execution time. The execution time does not include the I/O operations# like talking with the client, sending the reply and so forth,# but just the time needed to actually execute the command (this is the only# stage of command execution where the thread is blocked and can not serve# other requests in the meantime).## You can configure the slow log with two parameters: one tells Redis# what is the execution time, in microseconds, to exceed in order for the# command to get logged, and the other parameter is the length of the# slow log. When a new command is logged the oldest one is removed from the# queue of logged commands.# The following time is expressed in microseconds, so 1000000 is equivalent# to one second. Note that a negative number disables the slow log, while# a value of zero forces the logging of every command.slowlog-log-slower-than 10000# There is no limit to this length. Just be aware that it will consume memory.# You can reclaim memory used by the slow log with SLOWLOG RESET.slowlog-max-len 128################################ LATENCY MONITOR ############################### The Redis latency monitoring subsystem samples different operations# at runtime in order to collect data related to possible sources of# latency of a Redis instance.## Via the LATENCY command this information is available to the user that can# print graphs and obtain reports.## The system only logs operations that were performed in a time equal or# greater than the amount of milliseconds specified via the# latency-monitor-threshold configuration directive. When its value is set# to zero, the latency monitor is turned off.## By default latency monitoring is disabled since it is mostly not needed# if you don't have latency issues, and collecting data has a performance# impact, that while very small, can be measured under big load. Latency# monitoring can easily be enabled at runtime using the command# "CONFIG SET latency-monitor-threshold
与此同时,Redis 7.2 的开发工作也已经在进行当中了。
更多详情可查看 release notes:
https://github.com/redis/redis/blob/7.0/00-RELEASENOTES
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~