1. Redis的简介
Redis是一个开源(BSD许可),内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理
它支持字符串、哈希表、列表、集合、有序集合,位图,hyperloglogs等数据类型
内置复制、Lua脚本、LRU收回、事务以及不同级别磁盘持久化功能,同时通过Redis Sentinel提供高可用,通过Redis Cluster提供自动分区。
简言之,Redis是一种面向“键/值”对数据类型的内存数据库,可以满足我们对海量数据的快速读写需求。
2. Redis的特点
Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用
Redis不仅仅支持简单的k-v类型的数据,同时还提供list,set,zset,hash等数据结构的存储
Redis支持数据的备份,即master-slave主从模式的数据备份
3. Redis的优势
性能极高——Redis读的速度为11w/s,写的速度为8.1w/s
丰富的数据类型 (Strings,Lists,Hashes,Sets即Ordered Sets )
原子性——Redis的所有操作都是原子性的,同时Redis还支持对几个操作合并后的原子性执行
丰富的特性——Redis还支持publish/subscribe,通知,key过期等特性。
4. 常用的NoSql数据库
hbase
存储海量的数据(数十亿行,百万列)
redis
基于内存的nosql数据库
一般使用redis做缓存或者队列
mogodb
在结构化数据比较简单的情况下,可以使用mogodb代替mysql,作为一个高性能的数据库
5. Redis的安装
5.1 Redis单机版的安装
准备源码安装包
redis-3.2.0.tar.gz
解压
tar -zxvf redis-3.2.0.tar.gz -C /opt/
重命名
mv redis-3.2.0/ redis
安装gcc编译器
yum -y install gcc
编译安装源码
make && make install
注意:编译安装完成之后会在src目录下出现redis的相关命令
修改redis.conf的配置项
bind node1 (默认是127.0.0.1,这是本地回环地址,只能本地应用程序之间进行通信)
daemonize yes(后台运行)
logfile /opt/redis/logs/redis.log(日志文件,目录必须存在)
启动Redis-Server
src/redis-server redis.conf
启动redis客户端
src/redis-cli -h uplooking05 -p 6379
5.2 Redis集群的安装
把前面安装好的单机版的redis拷贝到uplooking04 uplooking03
修改redis.conf
bind uplookingxxxxx
在从节点(uplooking04 uplooking05) redis.conf 末尾追加
slaveof uplooking03 6379
修改从节点为只读不写(redis官方推荐的)(uplooking04 uplooking05)
slave-read-only yes
修改主节点(uplooking03)
slave-read-only no
ps:注意启动集群时尽量先启动主节点再启动从节点
6. Redis中配置的查看
Redis的配置文件位于Redis的安装目录之下,文件名为redis.conf。可以通过config命令来查看或设置配置项
config get confName: 获取配置的值
config set confName confVal: 设置配置的值
7. Redis中的数据类型
string(字符串)
hash(哈希)
list(列表)
set(集合)
zset(sorted set)有序的集合
8. 数据类型之String(字符串)
string是redis中最基本的数据类型
一个key对应一个value
string类型的value是基于二进制存储的,所以完全可以存储图片和影音等二进制数据
key的大小最大512mb
存储数据: set name value
读取数据: get name
删除redis中的key说对应的value: del key
9. 数据类型之Hash(哈希)
Redis hash 是一个键值对集合。Redis hash是一个string类型的field和value的映射表,hash特别适合用于存储对象 object
存储一个数据: HSET KEY fieldName value
获取数据: HGET KEY fieldName
设置多个数据: HMSET info sex nan address gansu
获取多个数据: HMGET info sex address
删除hash中的多个个键值对: HDEL info admin ...
删除redis中的key说对应的value: del key
10. 数据类型之List(列表)
Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)
首部添加数据: LPUSHloves java c++ python..
尾部添加元素: RPUSH linux hadoop..
查看数据: lrange loves 0 10000
首部移除元素: LPOP loves
尾部移除元素: RPOP loves
列表最多可存储 232-1元素 (4294967295, 每个列表可存储40多亿)。
11. 数据类型之Set(集合)
Redis的Set是string类型的无序集合。
集合中添加元素: SADD key member member ,member ...
SMEMBERS loves
集合中的元素是不能重复,如果添加的value已经存在在redis中则返回0,不存在则返回1
12. 数据类型之ZSet(有序集合)
Redis zset和set一样也是string类型元素的集合,且不允许重复的成员。不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序
zset的成员是唯一的,但分数(score)却可以重复
给zset添加数据: ZADD loves 5 java
获取固定得分范围的数据: ZRANGEBYSCORE loves 1 20
13. Redis中的常用命令
13.1 键值对相关
keys * 取出当前所有的key
exists name 查看redis是否有name这个key
del name 删除key name
expire confirm 100 设置confirm这个key100秒过期
ttl confirm 获取confirm 这个key的有效时长
persist confirm 移除confirm这个key的过期时间
select 0 (在redis中总共有16个数据库,默认是0号数据库)
move confirm 1 将当前数据库中的key移动到其他的数据库中
randomkey 随机返回数据库里面的一个key
rename key2 key3 重命名key2 为key3
type key2 返回key的数据类型
13.2 服务器相关
select 0~15 编号的数据库
quit /exit 退出客户端
dbsize 返回当前数据库中所有key的数量
info 返回redis的相关信息
==flushdb 删除当前选择数据库中的所有key==
==flushall 删除所有数据库中的数据==
14. Reds中的API操作
pom依赖
redis.clients
jedis
2.9.0
常用操作
package com.uplooking.bigdata.redis;
import org.junit.Test;
import redis.clients.jedis.Jedis;
public class RedisTest {
@Test
public void testString() {
//创建Jedis
Jedis jedis = new Jedis("uplooking03");
jedis.select(0);
jedis.set("name", "value");
System.out.println(jedis.get("name"));
}
@Test
public void testHash() {
//创建Jedis
Jedis jedis = new Jedis("uplooking03");
jedis.select(0);
jedis.hset("info", "name", "admin");
jedis.hset("info", "age", 12 + "");
System.out.println(jedis.hget("info", "name"));
}
@Test
public void testList() {
//创建Jedis
Jedis jedis = new Jedis("uplooking03");
jedis.select(0);
jedis.rpush("loves", "java", "c++", "python");
jedis.lpop("loves");
System.out.println(jedis.lrange("loves", 0, 10000));
System.out.println(jedis.rpop("loves"));
System.out.println(jedis.lrange("loves", 0, 10000));
}
}
15. Redis可视化工具
RedisDesktopManager