Redis学习(上)

Redis学习(上)

之前使用Nodejs参加比赛项目的时候使用过redis,但是当时开发时间紧迫,仅仅会一些最最基础的使用,并且也仅仅用来保存临时的验证码,了解还不够深入,现在主要使用JAVA来开发后端,redis是后端开发中十分重要,因此这段时间系统的学习一下。

NoSQL概述

Redis是一个NoSQL(Not Only SQL)的数据库,即非关系型数据库,主要解决高并发读写、海量数据的高效率存储和访问以及高可扩展性和高可用性等传统关系型数据库实现起来困难的场景。NoSQL数据库有四大分类:

  • 键值(Key-Value)存储:redis等
  • 列存储:Hbase等
  • 文档数据库:mongodb等
  • 图形数据库:Neo4j等

NoSQL总体有易扩展、灵活的数据模型、大量数据,高性能,高可用等特点。

Redis的概述

Redis是一个高性能键值对数据库,支持的键值数据类型:

  • 字符串类型
  • 列表类型
  • 有序集合类型
  • 散列类型
  • 集合类型

redis的应用场景:

  • 缓存
  • 任务队列
  • 网站访问的统计
  • 数据过期处理
  • 应用排行榜
  • 分布式集群架构中的session分离

Redis的安装和使用

Redis推荐安装在linux上,可以使用虚拟机搭建一个linux环境,这里使用云主机,系统是centos6.8。

  1. redis是c语言开发,因此需要gcc环境,在命令行输入下列命令安装
1
yum install -y gcc-c++
  1. 下载redis,输入下列命令下载redis安装包
1
wget http://download.redis.io/releases/redis-5.0.3.tar.gz
  1. 解压安装包
1
2
tar -xzvf redis-5.0.3.tar.gz 
cd redis-5.0.3/
  1. 编译
1
make
  1. 安装
1
make PREFIX=/usr/local/redis install
  1. 配置
1
2
3
cp redis.conf /usr/local/redis
cd /usr/local/redis/
vim redis.conf

进入插入模式,找到daemonize no这一行把no改成yes,然后退出插入模式:wq保存并退出

  1. 后台启动redis
1
./bin/redis-server ./redis.conf
  1. 验证redis是否启动
1
ps -ef | grep -i redis

运行完之后能看到redis-server 127.0.0.1:6379即为启动成功

  1. 停止redis
1
./bin/redis-cli shutdown
  1. 测试redis客户端(在redis启动情况下)
1
./bin/redis-cli

会进入redis命令行,输入ping命令回车,显示PONG即成功

简单使用

1
2
3
4
5
set name myjdemo # 设置一个键为name,值为myjdemo的数据
get name # 获取键为name的数据的值
keys * # 列出数据库里所有的键
del name # 删除键以及键对应的值
keys *

Jedis的入门

Jedis是Redis官方首选的Java客户端开发包。

新建一个maven工程,在pom文件中加入jedis依赖

1
2
3
4
5
6
<!-- https://mvnrepository.com/artifact/redis.clients/jedis -->
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
</dependency>
  1. 普通的jedis使用
1
2
3
4
5
6
7
8
9
10
11
12
@Test
public void demo1(){
//1.设置ip地址和端口
Jedis jedis = new Jedis("localhost",6379);
//2.保存数据
jedis.set("name","myjdemo");
//3.获取数据
String value = jedis.get("name");
System.out.println(value);
//4.释放资源
jedis.close();
}
  1. jedis连接池的使用
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
@Test
public void demo2() {
//获得连接池的配置对象
JedisPoolConfig config = new JedisPoolConfig();
//设置最大连接数
config.setMaxTotal(30);
//设置最大空闲连接数
config.setMaxIdle(10);

//获得连接池
JedisPool jedisPool = new JedisPool(config, "localhost", 6379);

//获取核心对象
Jedis jedis = null;
try{
//通过连接池获得连接
jedis = jedisPool.getResource();
jedis.set("name1","myjdemo-pool");
//3.获取数据
String value = jedis.get("name1");
System.out.println(value);
}catch (Exception e){
e.printStackTrace();
}finally {
if(jedis!=null)
jedis.close();
if(jedisPool!=null)
jedisPool.close();
}
}
# Java, Redis
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×