Redis-入门篇

    科技2024-08-06  29

    一、简介

    Redis数据库为Nosql型数据库中的一种,Nosql数据库为非关系数据库,特点是易扩展、大数据量,高性能、灵活的数据模型、高可用。

    1.redis是什么

    Redis is an open source (BSD licensed), in-memory data structure store, used as a database, cache and message broker. It supports data structures such as strings, hashes, lists, sets, sorted sets with range queries, bitmaps, hyperloglogs, geospatial indexes with radius queries and streams. Redis has built-in replication, Lua scripting, LRU eviction, transactions and different levels of on-disk persistence, and provides high availability via Redis Sentinel and automatic partitioning with Redis Cluster.

    Redis是一个开源(BSD许可),内存数据结构存储,用作数据库、缓存和消息代理,它支持数据结构,如字符串、散列、列表、集合、带有范围查询的排序集、位图、超级日志、具有半径查询流的地理空间索引。Redis具有内置复制、Lua脚本、LRU驱逐(算法)、事务和不同 级别的磁盘持久化,并通过Redis Sentinel(哨兵)提供高可用性并使用Redis Cluster(集群)自动分区。

    Remote Dictionary Server(远程数据服务)简称Redis,是一个key-value存储系统。

    2.redis的特点

    (1)数据结构丰富

    (2)持久化

    (3)支持简单事务

    (4)主从配置方便

    3.redis与memcached相比的独特之处

    (1)redis可以用来做存储(storge)和缓存(cache),而memcached只能用来做缓存(cache),redis具有持久化功能

    (2)memcached的存储的结构只有一种类型:字符串;而redis则可以存储字符串、链表、哈希结构、集合、有序集合等。

    二、Nosql的适用场景

    NoSQL数据库在以下的这几种情况下比较适用:

    (1)、数据模型比较简单;

    (2)、需要灵活性更强的IT系统;

    (3)、对数据库性能要求较高;

    (4)、不需要高度的数据一致性;

    (5)、对于给定key,比较容易映射复杂值的环境。

    Redis是一个key-value存储系统,主要应用场景为:缓存、任务队列、应用排行榜、网站访问统计、数据过期处理、分布式集群架构中的session分离。

    三、优点

    1.支持多种数据结构,如 string(字符串)、 list(双向链表)、dict(hash表)、set(集合)、zset(排序set)、hyperloglog(基数估算)

    2.支持持久化操作,可以进行aof及rdb数据持久化到磁盘,从而进行数据备份或数据恢复等操作,较好的防止数据丢失  的手段。

    3.支持通过Replication进行数据复制,通过master-slave机制,可以实时进行数据的同步复制,支持多级复制和增量复制,master-slave机制是Redis进行HA的重要手段。

    4.单线程请求,所有命令串行执行,并发情况下不需要考虑数据一致性问题。

    5.支持pub/sub消息订阅机制,可以用来进行消息订阅与通知。

    6.支持简单的事务需求,但业界使用场景很少,并不成熟。

    四、缺点

    1.Redis只能使用单线程,性能受限于CPU性能,故单实例CPU最高才可能达到5-6wQPS每秒(取决于数据结构,数据大小以及服务器硬件性能,日常环境中QPS高峰大约在1-2w左右)。

    2.支持简单的事务需求,但业界使用场景很少,并不成熟,既是优点也是缺点。

    3.Redis在string类型上会消耗较多内存,可以使用dict(hash表)压缩存储以降低内存耗用

    五、redis安装

    1. 压缩包解压安装

    (1)下载Redis服务端的包,样例中使用的版本是redis-5.0.8.tar.gz

    (2) 解压文件:  tar –xvf redis-5.0.8.tar.gz

    (3)  进入解压后的文件/redis/src目录,运行make开始编译,编译成功之后会在src目录下生成redis-cli , redis-server , redis-sentinel , redis-check-dump , redis-check-aof , redis-benchmark 可执行文件

    (4)在/redis-5.0.8目录下新建bin目录:mkdir bin ,拷贝步骤3生成的可执行文件到/redis/bin目录:cp 文件 路径

    (5)拷贝redis目录下的redis.conf至bin目录,redis默认使用端口是6379,可以使用netstat –an|grep 6379检查6379端口是否被占用

    (6)在redis/bin目录下执行“nohup ./redis-server &”让redis服务端在后台运行,检查nohup.out中是否打出如下日志”  The server is now ready to accept connections on port 6379”,标识redis服务端启动成功。

     

    2. 直接在linux上联网安装Redis

    (1)指定目录下载redis源码:wget http://download.redis.io/releases/redis-5.0.8.tar.gz

    (2)解压redis源码:tar -xzcf …

    (3)linux编译redis源码(在解压后得目录里面):make

    (如果是32位机器 make 32bit)

    (3.1)可选步骤:make test 测试编译情况

    (可能遇到的情况: need tcl >8.5的情况,解决办法:yum -y install tcl)

    (4)指定路径安装redis: make PREFIX=/usr/local/src/redis install

    (4.1)安装之后得到如下几个文件:

         redis-benchmark  性能测试工具

         redis-check-aof  日志文件检测工具(比如断电造成日志损坏,可以检测并修复)

         redis-check-dump  快照文件检测工具,效果类上(比如断电造成日志损坏,可以检测并修复)

         redis-cli  客户端

         redis-server 服务端

    (5)复制源文件得conf配置文件过来到安装目录(bin同目录)

    (6)启动:./bin/redis-server ./redis.conf

    (7)连接:./bin/redis-cli

    redis的协议是基础文本的协议,(http,memcached也是)

    客户端的开发较为简便

    redis官方提供了C,java,C#,PHP,lua脚本的客户端

    (8)修改redis.conf 得daemonize=yes,让其后台运行

    遇到得问题:

    (1).Linux编译redis报致命错误:fatal error: jemalloc/jemalloc.h: No such file or directory

    分配器allocator, 如果有MALLOC 这个 环境变量, 会有用这个环境变量的 去建立Redis。而且libc 并不是默认的 分配器, 默认的是 jemalloc, 因为 jemalloc 被证明 有更少的 fragmentation problems 比libc。但是如果你又没有jemalloc 而只有 libc 当然 make 出错。 所以加这么一个参数,运行如下命令:

    make MALLOC=libc

    (2)make的时候出现时间错误的问题

    原因: 源码是官方configure过的,但官方configure时,生成的文件有时间戳信息,Make只能发生在configure之后,

    如果你的虚拟机的时间不对,比如说是2012年

    解决:

    date -s ‘yyyy-mm-dd hh:mm:ss’   重写时间

       

    再 clock -w                写入cmos

    六、Redis的简单使用

    1.修改redis.conf文件中属性中的daemonize=yes,开启后端启动。

    2.redis可执行工具说明:

    redis-server:Redis服务器的daemon启动程序 

    redis-cli:Redis命令行操作工具。 

    redis-benchmark:Redis性能测试工具,测试Redis在你的系统及你的配置下的读写性能 

    redis-check-rdb: 检查file.rdb 文件 

    redis-check-aof:检查file.aof 文件 

    redis-sentinel: redis用于HA的哨兵

    redis-passwd:redis服务端加解密工具

    3.启动redis:运行命令nohup ./redis-server &,然后运行./redis-cli

    4.简单的使用redis存储数据,样例:存储名字xxx

    命令:set name xxx

    查看名字:get name

    查看所有key值:keys * 

    删除名字: del name

    Processed: 0.010, SQL: 8