• redis


    cd /opt/modules/src

    wget http://redis.googlecode.com/files/redis-2.6.8.tar.gz
    cd redis-2.6.8
    make PREFIX=/opt/modules/redis install
    cp redis.conf /opt/modules/redis
    vim /opt/modules/redis/redis.con
    修改文件
    dir /opt/modules/redis
    daemonize yes


     连接

    redis-cli -h host -p port

    连接成功后,执行命令,如:get '3700003234644'

    用完记得close


    Redis是个高性能的key-value数据库,它的key具有丰富的数据结构:string,hash,list set和sorted set。作为NOSQL(not only sql,非关系型数据库),比起memcache之类,不仅仅key数据结构丰富,而且具有持久化的功能,并且能够支持主从复制,很方便构建集群。redis高性能很大程度上源于它是个内存型数据库

    Redis从它的许多竞争继承来的三个主要特点:

    Redis数据库完全在内存中,使用磁盘仅用于持久性。

    相比许多键值数据存储,Redis拥有一套较为丰富的数据类型。

    Redis可以将数据复制到任意数量的从服务器。

    Redis 优势
    异常快速:Redis的速度非常快,每秒能执行约11万集合,每秒约81000+条记录。

    支持丰富的数据类型:Redis支持最大多数开发人员已经知道像列表,集合,有序集合,散列数据类型。这使得它非常容易解决各种各样的问题,因为我们知道哪些问题是可以处理通过它的数据类型更好。

    操作都是原子性:所有Redis操作是原子的,这保证了如果两个客户端同时访问的Redis服务器将获得更新后的值。(整个事务必须完成,在某步失败了就会回滚)

    多功能实用工具:Redis是一个多实用的工具,可以在多个用例如缓存,消息,队列使用(Redis原生支持发布/订阅),任何短暂的数据,应用程序,如Web应用程序会话,网页命中计数等。


    # redis 配置文件示例

    # 当你需要为某个配置项指定内存大小的时候,必须要带上单位,
    # 通常的格式就是 1k 5gb 4m 等酱紫:
    #
    # 1k => 1000 bytes
    # 1kb => 1024 bytes
    # 1m => 1000000 bytes
    # 1mb => 1024*1024 bytes
    # 1g => 1000000000 bytes
    # 1gb => 1024*1024*1024 bytes
    #
    # 单位是不区分大小写的,你写 1K 5GB 4M 也行

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

    # 假如说你有一个可用于所有的 redis server 的标准配置模板,
    # 但针对某些 server 又需要一些个性化的设置,
    # 你可以使用 include 来包含一些其他的配置文件,这对你来说是非常有用的。
    #
    # 但是要注意哦,include 是不能被 config rewrite 命令改写的
    # 由于 redis 总是以最后的加工线作为一个配置指令值,所以你最好是把 include 放在这个文件的最前面,
    # 以避免在运行时覆盖配置的改变,相反,你就把它放在后面(外国人真啰嗦)。
    #
    # include /path/to/local.conf
    # include /path/to/other.conf

    ################################ 常用 #####################################

    # 默认情况下 redis 不是作为守护进程运行的,如果你想让它在后台运行,你就把它改成 yes。
    # 当redis作为守护进程运行的时候,它会写一个 pid 到 /var/run/redis.pid 文件里面。
    daemonize no

    # 当redis作为守护进程运行的时候,它会把 pid 默认写到 /var/run/redis.pid 文件里面,
    # 但是你可以在这里自己制定它的文件位置。
    pidfile /var/run/redis.pid

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

    # TCP 监听的最大容纳数量
    #
    # 在高并发的环境下,你需要把这个值调高以避免客户端连接缓慢的问题。
    # Linux 内核会一声不响的把这个值缩小成 /proc/sys/net/core/somaxconn 对应的值,
    # 所以你要修改这两个值才能达到你的预期。
    tcp-backlog 511

    # 默认情况下,redis 在 server 上所有有效的网络接口上监听客户端连接。
    # 你如果只想让它在一个网络接口上监听,那你就绑定一个IP或者多个IP。
    #
    # 示例,多个IP用空格隔开:
    #
    # bind 192.168.1.100 10.0.0.1
    # bind 127.0.0.1

    # 指定 unix socket 的路径。
    #
    # unixsocket /tmp/redis.sock
    # unixsocketperm 755

    # 指定在一个 client 空闲多少秒之后关闭连接(0 就是不管它)
    timeout 0

    # tcp 心跳包。
    #
    # 如果设置为非零,则在与客户端缺乏通讯的时候使用 SO_KEEPALIVE 发送 tcp acks 给客户端。
    # 这个之所有有用,主要由两个原因:
    #
    # 1) 防止死的 peers
    # 2) Take the connection alive from the point of view of network
    # equipment in the middle.
    #
    # On Linux, the specified value (in seconds) is the period used to send ACKs.
    # Note that to close the connection the double of the time is needed.
    # On other kernels the period depends on the kernel configuration.
    #
    # A reasonable value for this option is 60 seconds.
    # 推荐一个合理的值就是60秒
    tcp-keepalive 0

    # 定义日志级别。
    # 可以是下面的这些值:
    # 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

    ################################ 快照 ################################
    #
    # 存 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 ./

    ################################# 主从复制 #################################

    # 主从复制。使用 slaveof 来让一个 redis 实例成为另一个reids 实例的副本。
    # 注意这个只需要在 slave 上配置。
    #
    # slaveof <masterip> <masterport>

    # 如果 master 需要密码认证,就在这里设置
    # masterauth <master-password>

    # 当一个 slave 与 master 失去联系,或者复制正在进行的时候,
    # slave 可能会有两种表现:
    #
    # 1) 如果为 yes ,slave 仍然会应答客户端请求,但返回的数据可能是过时,
    # 或者数据可能是空的在第一次同步的时候
    #
    # 2) 如果为 no ,在你执行除了 info he salveof 之外的其他命令时,
    # slave 都将返回一个 "SYNC with master in progress" 的错误,
    #
    slave-serve-stale-data yes

    # 你可以配置一个 slave 实体是否接受写入操作。
    # 通过写入操作来存储一些短暂的数据对于一个 slave 实例来说可能是有用的,
    # 因为相对从 master 重新同步数而言,据数据写入到 slave 会更容易被删除。
    # 但是如果客户端因为一个错误的配置写入,也可能会导致一些问题。
    #
    # 从 redis 2.6 版起,默认 slaves 都是只读的。
    #
    # Note: read only slaves are not designed to be exposed to untrusted clients
    # on the internet. It's just a protection layer against misuse of the instance.
    # Still a read only slave exports by default all the administrative commands
    # such as CONFIG, DEBUG, and so forth. To a limited extent you can improve
    # security of read only slaves using 'rename-command' to shadow all the
    # administrative / dangerous commands.
    # 注意:只读的 slaves 没有被设计成在 internet 上暴露给不受信任的客户端。
    # 它仅仅是一个针对误用实例的一个保护层。
    slave-read-only yes

    # Slaves 在一个预定义的时间间隔内发送 ping 命令到 server 。
    # 你可以改变这个时间间隔。默认为 10 秒。
    #
    # repl-ping-slave-period 10

    # The following option sets the replication timeout for:
    # 设置主从复制过期时间
    #
    # 1) Bulk transfer I/O during SYNC, from the point of view of slave.
    # 2) Master timeout from the point of view of slaves (data, pings).
    # 3) Slave timeout from the point of view of masters (REPLCONF ACK pings).
    #
    # It is important to make sure that this value is greater than the value
    # specified for repl-ping-slave-period otherwise a timeout will be detected
    # every time there is low traffic between the master and the slave.
    # 这个值一定要比 repl-ping-slave-period 大
    #
    # repl-timeout 60

    # Disable TCP_NODELAY on the slave socket after SYNC?
    #
    # If you select "yes" Redis will use a smaller number of TCP packets and
    # less bandwidth to send data to slaves. But this can add a delay for
    # the data to appear on the slave side, up to 40 milliseconds with
    # Linux kernels using a default configuration.
    #
    # If you select "no" the delay for data to appear on the slave side will
    # be reduced but more bandwidth will be used for replication.
    #
    # By default we optimize for low latency, but in very high traffic conditions
    # or when the master and slaves are many hops away, turning this to "yes" may
    # be a good idea.
    repl-disable-tcp-nodelay no

    # 设置主从复制容量大小。这个 backlog 是一个用来在 slaves 被断开连接时
    # 存放 slave 数据的 buffer,所以当一个 slave 想要重新连接,通常不希望全部重新同步,
    # 只是部分同步就够了,仅仅传递 slave 在断开连接时丢失的这部分数据。
    #
    # The biggest the replication backlog, the longer the time the slave can be
    # disconnected and later be able to perform a partial resynchronization.
    # 这个值越大,salve 可以断开连接的时间就越长。
    #
    # The backlog is only allocated once there is at least a slave connected.
    #
    # repl-backlog-size 1mb

    # After a master has no longer connected slaves for some time, the backlog
    # will be freed. The following option configures the amount of seconds that
    # need to elapse, starting from the time the last slave disconnected, for
    # the backlog buffer to be freed.
    # 在某些时候,master 不再连接 slaves,backlog 将被释放。
    #
    # A value of 0 means to never release the backlog.
    # 如果设置为 0 ,意味着绝不释放 backlog 。
    #
    # repl-backlog-ttl 3600

    # 当 master 不能正常工作的时候,Redis Sentinel 会从 slaves 中选出一个新的 master,
    # 这个值越小,就越会被优先选中,但是如果是 0 , 那是意味着这个 slave 不可能被选中。
    #
    # 默认优先级为 100。
    slave-priority 100

    # It is possible for a master to stop accepting writes if there are less than
    # N slaves connected, having a lag less or equal than M seconds.
    #
    # The N slaves need to be in "online" state.
    #
    # The lag in seconds, that must be <= the specified value, is calculated from
    # the last ping received from the slave, that is usually sent every second.
    #
    # This option does not GUARANTEES that N replicas will accept the write, but
    # will limit the window of exposure for lost writes in case not enough slaves
    # are available, to the specified number of seconds.
    #
    # For example to require at least 3 slaves with a lag <= 10 seconds use:
    #
    # min-slaves-to-write 3
    # min-slaves-max-lag 10
    #
    # Setting one or the other to 0 disables the feature.
    #
    # By default min-slaves-to-write is set to 0 (feature disabled) and
    # min-slaves-max-lag is set to 10.

    ################################## 安全 ###################################

    # Require clients to issue AUTH <PASSWORD> before processing any other
    # commands. This might be useful in environments in which you do not trust
    # others with access to the host running redis-server.
    #
    # This should stay commented out for backward compatibility and because most
    # people do not need auth (e.g. they run their own servers).
    #
    # Warning: since Redis is pretty fast an outside user can try up to
    # 150k passwords per second against a good box. This means that you should
    # use a very strong password otherwise it will be very easy to break.
    #
    # 设置认证密码
    # requirepass foobared

    # Command renaming.
    #
    # It is possible to change the name of dangerous commands in a shared
    # environment. For instance the CONFIG command may be renamed into something
    # hard to guess so that it will still be available for internal-use tools
    # but not available for general clients.
    #
    # Example:
    #
    # rename-command CONFIG b840fc02d524045429941cc15f59e41cb7be6c52
    #
    # It is also possible to completely kill a command by renaming it into
    # an empty string:
    #
    # rename-command CONFIG ""
    #
    # Please note that changing the name of commands that are logged into the
    # AOF file or transmitted to slaves may cause problems.

    ################################### 限制 ####################################

    # Set the max number of connected clients at the same time. By default
    # this limit is set to 10000 clients, however if the Redis server is not
    # able to configure the process file limit to allow for the specified limit
    # the max number of allowed clients is set to the current file limit
    # minus 32 (as Redis reserves a few file descriptors for internal uses).
    #
    # 一旦达到最大限制,redis 将关闭所有的新连接
    # 并发送一个‘max number of clients reached’的错误。
    #
    # maxclients 10000

    # 如果你设置了这个值,当缓存的数据容量达到这个值, redis 将根据你选择的
    # eviction 策略来移除一些 keys。
    #
    # 如果 redis 不能根据策略移除 keys ,或者是策略被设置为 ‘noeviction’,
    # redis 将开始响应错误给命令,如 set,lpush 等等,
    # 并继续响应只读的命令,如 get
    #
    # This option is usually useful when using Redis as an LRU cache, or to set
    # a hard memory limit for an instance (using the 'noeviction' policy).
    #
    # WARNING: If you have slaves attached to an instance with maxmemory on,
    # the size of the output buffers needed to feed the slaves are subtracted
    # from the used memory count, so that network problems / resyncs will
    # not trigger a loop where keys are evicted, and in turn the output
    # buffer of slaves is full with DELs of keys evicted triggering the deletion
    # of more keys, and so forth until the database is completely emptied.
    #
    # In short... if you have slaves attached it is suggested that you set a lower
    # limit for maxmemory so that there is some free RAM on the system for slave
    # output buffers (but this is not needed if the policy is 'noeviction').
    #
    # 最大使用内存
    # maxmemory <bytes>

    # 最大内存策略,你有 5 个选择。
    #
    # volatile-lru -> remove the key with an expire set using an LRU algorithm
    # volatile-lru -> 使用 LRU 算法移除包含过期设置的 key 。
    # allkeys-lru -> remove any key accordingly to the LRU algorithm
    # allkeys-lru -> 根据 LRU 算法移除所有的 key 。
    # volatile-random -> remove a random key with an expire set
    # allkeys-random -> remove a random key, any key
    # volatile-ttl -> remove the key with the nearest expire time (minor TTL)
    # noeviction -> don't expire at all, just return an error on write operations
    # noeviction -> 不让任何 key 过期,只是给写入操作返回一个错误

  • 相关阅读:
    js 第四课
    斐波那契数列(Fibonacci)(递归,非递归)(动态规划,自顶向下,自底向上)
    八种方法计算字符串中特定字符的数量
    谁做对了?
    数组问题
    关于“ORA12988: 无法删除属于 SYS 的表中的列”
    两条路,此人如何问甲乙问题?才能走向京城
    学了快二月的Nhibernate
    温故知新,把牢基础~
    用键盘选择复选框
  • 原文地址:https://www.cnblogs.com/mogujiang/p/5552962.html
Copyright © 2020-2023  润新知