zoukankan      html  css  js  c++  java
  • Redis基础

    一、Redis简介

    Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。 它支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 与范围查询, bitmaps, hyperloglogs 和 地理空间(geospatial) 索引半径查询。 Redis 内置了 复制(replication),LUA脚本(Lua scripting), LRU驱动事件(LRU eviction),事务(transactions) 和不同级别的 磁盘持久化(persistence), 并通过 Redis哨兵(Sentinel)和自动 分区(Cluster)提供高可用性(high availability)。

    二、Redis组成

    Redis 由四个可执行文件:redis-benchmark、redis-cli、redis-server、redis-stat 这四个文件,加上一个redis.conf就构成了整个redis的最终可用包。它们的作用如下:
    • redis-server:Redis服务器的daemon启动程序
    • redis-cli:Redis命令行操作工具。当然,你也可以用telnet根据其纯文本协议来操作
    • redis-benchmark:Redis性能测试工具,测试Redis在你的系统及你的配置下的读写性能
    • redis-stat:Redis状态检测工具,可以检测Redis当前状态参数及延迟状况
    现在就可以启动redis了,redis只有一个启动参数,就是他的配置文件路径。
    • redis-server /etc/redis.conf
    • 注意,默认复制过去的redis.conf文件的daemonize参数为no,所以redis不会在后台运行,这时要测试,我们需要重新开一个终端。修改为yes则为后台运行redis。另外配置文件中规定了pid文件,log文件和数据文件的地址,如果有需要先修改,默认log信息定向到stdout.

    常用的redis.conf文件配置参数

    下面是redis.conf的主要配置参数的意义:

      daemonize:是否以后台daemon方式运行
      pidfile:pid文件位置
      port:监听的端口号
      timeout:请求超时时间
      loglevel:log信息级别
      logfile:log文件位置
      databases:开启数据库的数量
      save * *:保存快照的频率,第一个*表示多长时间,第三个*表示执行多少次写操作。在一定时间内执行一定数量的写操作时,自动保存快照。可设置多个条件。
      rdbcompression:是否使用压缩
      dbfilename:数据快照文件名(只是文件名,不包括目录)
      dir:数据快照的保存目录(这个是目录)
      appendonly:是否开启appendonlylog,开启的话每次写操作会记一条log,这会提高数据抗风险能力,但影响效率。
      appendfsync:appendonlylog如何同步到磁盘(三个选项,分别是每次写都强制调用fsync、每秒启用一次fsync、不调用fsync等待系统自己同步)
    这时你可以打开一个终端进行测试了,配置文件中默认的监听端口是6379

    我们可以开启一个Redis客户端进行测试

    [root@SNDA-192-168-1-114 ~]# redis-cli 
    Could not connect to Redis at 127.0.0.1:6379: Connection refused 
    not connected> exit 
    [root@SNDA-192-168-1-114 ~]# redis-server /etc/redis.conf 
    [root@SNDA-192-168-1-114 ~]# redis-cli 
    redis 127.0.0.1:6379> quit

    三、Redis数据结构

    redis 的作者antirez曾称其为一个数据结构服务器(data structures server),这是一个非常准确的表述,redis的所有功能就是将数据以其固有的几种结构保存,并提供给用户操作这几种结构的接口。我们可以想象我们在各种语言中的那些固有数据类型及其操作。

    redis目前提供四种数据类型:string,list,set及zset(sorted set)和Hash。

    string是最简单的类型,你可以理解成与Memcached一模一个的类型,一个key对应一个value,其上支持的操作与Memcached的操作类似。但它的功能更丰富。
    list是一个链表结构,主要功能是push、pop、获取一个范围的所有值等等。操作中key理解为链表的名字。
    set是集合,和我们数学中的集合概念相似,对集合的操作有添加删除元素,有对多个集合求交并差等操作。操作中key理解为集合的名字。
    zset是set的一个升级版本,他在set的基础上增加了一个顺序属性,这一属性在添加修改元素的时候可以指定,每次指定后,zset会自动重新按新的值调整顺序。可以理解了有两列的mysql表,一列存value,一列存顺序。操作中key理解为zset的名字。
    Hash数据类型允许用户用Redis存储对象类型,Hash数据类型的一个重要优点是,当你存储的数据对象只有很少几个key值时,数据存储的内存消耗会很小.

    更多关于Hash数据类型的说明请见: http://code.google.com/p/redis/wiki/Hashes


    在官网上给出了所有支持的接口列表,并副副附有详细的介绍,地址:

    http://code.google.com/p/redis/wiki/CommandReference

    另外,作者还提供了一个非常贴心的web命令行模拟页面,供初学者试用redis,地址:

    http://try.redis-db.com/

    四、Redis数据存储

    redis的存储分为内存存储、磁盘存储和log文件三部分,配置文件中有三个参数对其进行配置。

    save seconds updates,save配置,指出在多长时间内,有多少次更新操作,就将数据同步到数据文件。这个可以多个条件配合,比如默认配置文件中的设置,就设置了三个条件。

    appendonly yes/no ,appendonly配置,指出是否在每次更新操作后进行日志记录,如果不开启,可能会在断电时导致一段时间内的数据丢失。因为redis本身同步数据文件是按上面的save条件来同步的,所以有的数据会在一段时间内只存在于内存中。

    appendfsync no/always/everysec ,appendfsync配置,no表示等操作系统进行数据缓存同步到磁盘,always表示每次更新操作后手动调用fsync()将数据写到磁盘,everysec表示每秒同步一次。

    五、Redis主从配置

    redis支持master-slave的主从配置,配置方法是在从机的配置文件中指定slaveof参数为主机的ip和port即可

    六、Redis起步(链接整理)

    项目首页,下方是各种语言支持列表:

    http://code.google.com/p/redis/

    作者在wiki中给出了一个非常好的例子,以使我们可以快速上手,地址:

    http://code.google.com/p/redis/wiki/TwitterAlikeExample

    同时作者推荐的另一个教程,地址:

    http://labs.alcacoop.it/doku.php?id=articles:redis_land

    一个redis爱好者创建的相关问题讨论网站:

    http://www.rediscookbook.org/

    为什么使用 Redis及其产品定位

    http://www.infoq.com/cn/articles/tq-why-choose-redis

    Redis内存使用优化与存储

    http://www.infoq.com/cn/articles/tq-redis-memory-usage-optimization-storage

    总结起来:

    1.redis存储数据类型:字符串数据类型。散列数据类型,列表数据类型,集合类型,有序集合类型

    2.redis以什么形式存储。键值对的形式。
    3.redis存储在什么地方。内存中。

    4.redis的特点。由于存储在内存读写速度,快于硬盘。

    5.redis存内存的退出会消失。不过。redis支持持久化操作,即将可以内存中的数据异步写入到硬盘中。

    6.由于redis虽然是作为数据库开发的,但是由于其提供了丰富的功能,越来越多的人将其作用作,缓存。队列系统等。

    7.为什么redis可以坐为缓存来使用的。由于可以为每个键设置生存时间,生存时间到期后键会自动被删除,这一功能配合出色的性能。
    让redis可以作缓存系统使用。

    8.性能redis是单线程模型。

    9.如果用到高级的数据类型或持久化等功能。redis将会是memcached很好的替代品


    10.除此以外redis的列表类型键可以来实现队列。并且支持阻塞读取。

    11.redis是通过命令来读写数据。

  • 相关阅读:
    Python语言简介以及特点
    计算机组成原理简述
    Python中的dict字典的用法
    Python3中IO文件操作的常见用法
    Python中的装饰器的使用及固定模式
    Python中的解决中文字符编码的问题
    Python中常见字符串去除空格的方法总结
    Python中print函数中中逗号和加号的区别
    当引用了Properties.Settings后,如果执行的时候,出现"配置系统无法初始化" 或者 某某节点不正确
    修改IP的方法(C#)
  • 原文地址:https://www.cnblogs.com/huojg-21442/p/7193976.html
Copyright © 2011-2022 走看看