第一章 简介
Redis是一个开源高性能键值数据库。它通过提供多种键值数据类型类适应不同场景下的存储需求,并借助许多高层及的接口使其可以胜任如缓存,队列系统等不同的角色。
1.1 存储结构
使用键值存储 ,key = value 。key 为键名, value是键值
支持的物种数据类型如下:
Ø 字符串类型
Ø 散列类型
Ø 列表类型
Ø 集合类型
Ø 有序集合类型
1.2 内存存储和持久化
Redis 数据库的所有数据都存储在内存中。由于内存的读写速度远高于硬盘,因此Redis在性能对比其他的基于硬盘存储的数据库有巨大优势,Redis 可以在一秒内读写超过十万个键值。
将数据存放在内存中也有问题,例如,程序退出后数据容易丢失。不过redis 对持久化做了处理,可以将数据存放到硬盘中。
1.3 Redis与memcached 的区别
² 网络Io模型
Memcached 是多线程,非阻塞复用的网络模型。Redis是单线程的IO复用模型,可以将速度优势发挥到最大,如果吞吐量过大,容易阻塞。
² 内存管理
Memcached 采用预分配池的方式,Redis采用现场分配申请内存的方式。
² 存储方式
Memcached 基本只支持简单的key-value 存储,redis 出来支持key/value 外还支 list,set, sorted ,set , hash .
第二章 安装
Redis 约定,次版本号为偶数的为稳定版,为奇数的为不稳定版。
2.1 Linux 安装
安装linux 系统过程略过,直奔主题,安装Redis数据库
² 下载软件包
第一种:官网下载已经编译好的源码包,官网地址redis.io
第二种:使用wget命令
Wget http://download.redis.io/redis-stable.tar.gz
² tar -xvzf redis-stable.tar.gz
² cd redis-stable
² make
² make install
Redis 没有其他的外部依赖 ,安装过程比较的简单,执行make install 是为了将可执行程序复制到/usr/local/bin 目录下,以便于以后不用到安装目录就可以执行程序。make test 命令请选择性执行。
2.2 Windows 安装
听说有windows版本但没有用过
2.3 启动停止Redis
最常用的两个程序:redis-server 和 redis-cli .
redis-server : 服务器, redis-cli 命令行客户端
2.3.1 启动redis
启动redis 有两种方式:直接启动和初始化脚本启动。 分别使用与开发环境和生产环境中。
² 直接启动
直接运行redis-server 即可,redis 默认的接口为6379 .
指定端口启动,redis-server --port 6380 指定6380 为redis 接口
² 初始化脚本启动
在redis源代码目录下,有一个Utils文件夹,下面有一个名为redis_init_script 的 初始化脚本文件。使用初始化脚本文件启动步骤:
Ø 将该文件拷贝到/etc/init.d 目录下,可以修改文件名,可以不修改,修改文件名是为了更好的辨别redis 的启动接口。
REDISPORT=6379
EXEC=/usr/local/bin/redis-server
CLIEXEC=/usr/local/bin/redis-cli
PIDFILE=/var/run/redis_${REDISPORT}.pid
CONF="/etc/redis/${REDISPORT}.conf"
Ø 建立需要的文件
/etc/redis 存放redis 配置文件 路径可以修改,但要与上面的路径统一
/var/redis/端口号 存放持久化文件
Ø 修改配置文件
在源码安装目录有一个名为redis.conf 的文件,这个便是配置文件,修改下面几项:
daemoniz yes 一守护进程的方式运行
pidfile /var/run/redis_端口号.pid 设置文件PID 位置
port 端口号 设置redis 的监听端口
dir /var/redis/端口号 设置持久化文件存放的位置
执行完上面的命令之后,可以使用 /etc/init.d/redis_端口号 start 来启动Redis 了 ,而后需要执行下面命令,是Redis 跟随系统启动
sudo update-rc.d redis_端口号 defaults
2.3.2 停止Redis
强制终止redis 进程有可能会导致数据丢失。正确的停止Redis的方法是 发送shutdown 命令,语法格式:Redis-cli shutdown 。或者使用kill 命令 ,杀死进程pid的方式也可以
redis-cli -h 127.0.0.1 -p 6379 指定redis 主机 和监听端口
redis-cli ping 测试客户端与redis的链接是否正常,正常收到pong
第三章 数据类型
Redis 支持5种数据类型,说明如下:
3.1字符串
Redis 字符串是一个字节序列。在 Redis 中字符串是二进制安全的,这意味着它们没有任何特殊终端字符来确定长度,所以可以存储任何长度为 512 兆的字符串。
示例
redis 127.0.0.1:6379> SET name "yi"
OK
redis 127.0.0.1:6379> GET name
"yi"
在上面的例子中,SET 和 GET 是 Redis 命令,name 和 "yiibai" 是存储在 Redis 的键和字符串值。
3.2哈希
Redis哈希是键值对的集合。 Redis哈希是字符串字段和字符串值之间的映射,所以它们用来表示对象。
示例
redis 127.0.0.1:6379> HMSET user:1 username yiibai password yiibai points 200
OK
redis 127.0.0.1:6379> HGETALL user:1
1) "username"
2) "yi"
3) "password"
4) "yi"
5) "points"
6) "200"
在上面的例子中,哈希数据类型用于存储包含用户基本信息的用户对象。这里 HSET,HEXTALL 是 Redis 命令同时 user:1 也是一个键。
3.3列表
Redis 列表是简单的字符串列表,通过插入顺序排序。可以添加一个元素到 Redis 列表的头部或尾部。
示例
redis 127.0.0.1:6379> lpush tutoriallist redis
(integer) 1
redis 127.0.0.1:6379> lpush tutoriallist mongodb
(integer) 2
redis 127.0.0.1:6379> lpush tutoriallist rabitmq
(integer) 3
redis 127.0.0.1:6379> lrange tutoriallist 0 10
1) "rabitmq"
2) "mongodb"
3) "redis"
列表的最大长度为 232 - 1 个元素(4294967295,每个列表的元素超过四十亿)。
3.4集合
Redis 集合是字符串的无序集合。在 Redis 可以添加,删除和测试成员存在的时间复杂度为 O(1)。
示例
redis 127.0.0.1:6379> sadd tutoriallist redis
(integer) 1
redis 127.0.0.1:6379> sadd tutoriallist mongodb
(integer) 1
redis 127.0.0.1:6379> sadd tutoriallist rabitmq
(integer) 1
redis 127.0.0.1:6379> sadd tutoriallist rabitmq
(integer) 0
redis 127.0.0.1:6379> smembers tutoriallist
1) "rabitmq"
2) "mongodb"
3) "redis"
注:在上面的例子中 rabitmq 被添加两次,但由于它是只集合具有唯一特性。集合中的成员最大数量为 232 - 1(4294967295,每个集合有超过四十亿条记录)。
3.5集合排序
不同的是,一个有序集合的每个成员都可以排序,就是为了按有序集合排序获取它们,按权重分值从最小到最大排序。虽然成员都是独一无二的,按权重分数值可能会重复。
示例
redis 127.0.0.1:6379> zadd tutoriallist 0 redis
(integer) 1
redis 127.0.0.1:6379> zadd tutoriallist 0 mongodb
(integer) 1
redis 127.0.0.1:6379> zadd tutoriallist 0 rabitmq
(integer) 1
redis 127.0.0.1:6379> zadd tutoriallist 0 rabitmq
(integer) 0
redis 127.0.0.1:6379> ZRANGEBYSCORE tutoriallist 0 1000
1) "redis"
2) "mongodb"
3) "rabitmq"
第四章 Redis Java
详细信息可以查看这篇文章:http://www.cnblogs.com/edisonfeng/p/3571870.html
参考:http://www.yiibai.com/redis/
---------------------------------------------------
少年听雨歌楼上,红烛昏罗帐。
壮年听雨客舟中,江阔云低,断雁叫西风。
感谢支持!
---起个名忒难
--------------------------------------------------------