一、redis的安装
官网 :https://redis.io
下载redis的版本建议选择偶数结尾的版本,因为奇数版本的一般都属于预测版。
步骤
- 安装依赖环境
yum install -y gcc
关于centos7下重启网卡的命令:
systemctl restart network
查看ip地址:ip addr
网卡配置:vi /etc/sysconfig/network-scripts/ifcfg-ens33
2. 安装
① 解压源码包: tar -zxvf redis-4.0.14.tar.gz
② 进入到解压目录:
make
make install
3. redis的访问
① 启动服务
第一种方式, 采用redis的默认配置启动服务: redis-server
第一种方式, 指定配置启动: redis-server redis.conf
② redis客户端访问命令
第一种方式,访问本机的redis服务: redis-cli
第二种方式,访问远程服务器上的redis服务: redis-cli -h IP -p PORT
4. 配置redis开机自启动
第一步 mkdir /etc/redis
第二步 cp redis.conf /etc/redis/6379.conf
第三步 mkdir /var/redis
第四步 touch /var/redis/6379
第五步 vi /etc/redis/6379.conf
(修改标注的内容)
第六步 cp utils/redis_init_script /etc/init.d/redis
第七步 vi /etc/init.d/redis
(设置redis的启动阶段和服务的优先级)
第八步 chkconfig --add redis
(将redis添加到开启自启动服务)
PS : 使用service命令启动 / 关闭 service redis start/stop redis
二、redis的全局命令
- 遍历展示所有的key:
keys *
- 统计key的总数:
dbsize
- 设置过期时间:
expire key
时间/秒 - 查看key的剩余过期时间:
ttl key
返回正数,代表key剩余多少秒过期
返回-1, 代表指定的key存在,并没有设置过期策略
返回-2,代表指定的key过期不存在了
- 取消key 的过期时间设置:
persist key
- 删除指定的key :
del key
- 清除所有的key:
flushdb
仅仅清除当前子库
下所有的key
flushall
清除所有子库
中的key - 切换子库
select index
redis中的子库 : 默认redis提供了16个子库,以下标的形式标识,从0-15个编号
当我们登录到redis的时候,默认进入的是0号子库
- 查看命令帮助文档:
help 命令名
- 退出redis客户端 :
quit | exit
三、redis的数据类型
1.string类型
用于存储字符串数据。
2.list类型
列表类型,元素有序 可以重复。
3.set类型
set集合类型,元素不允许重复,无序,无下标。
4.zset类型
属于一种有序的set , 是通过给集合的元素设定分值实现的。
5.hash类型
类似于map,就是redis中的键对应的值是一个一个的键值对。
6.使用场景和注意事项
注意事项: 不同数据类型的操作命令不能操作其他数据类型。
set命令可以覆盖任何键值对,不在乎什么数据类型。
type key 返回key对应的数据类型
使用场景
string类型: 可用于分值的统计、微博粉丝相关的业务计算。
list类型:可以实现消息队列。
set类型: 可以对访问的客户端IP进行统计保存。可以做好友推荐。
zset 类型: 可以用于存储元素带有权重和分值的数据,比如排行榜。
hash类型: 非常适合存储对象。
四、Jedis的使用
Jedis就是集成了redis的一些命令操作,封装了redis的java客户端。提供了连接池管理。一般不直接使用jedis,而是在其上在封装一层,作为业务的使用。
核心API
Jedis: 一个Jedis对象代表与redis建立的一次连接
JedisPool:连接池对象,里面可根据配置去初始化Jedis对象
JedisPoolConfig:连接池配置对象
1.引入依赖
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>redis_day1</artifactId>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<!-- jedis依赖 -->
<!-- https://mvnrepository.com/artifact/redis.clients/jedis -->
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
</dependency>
<!-- jedis的第三方依赖 -->
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.4</version>
</dependency>
</dependencies>
</project>
2.工具类
package com.baizhi.utils;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Properties;
/**
* @Author zxw
* @Descript
* @Time 2020/09/07 19:09
*/
public class JedisUtils {
private static JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
private static JedisPool jedisPool;
static{
Properties properties = new Properties();
FileInputStream fis = null;
try {
String path = JedisUtils.class.getClassLoader().getResource("redis.properties").getPath();
fis = new FileInputStream(path);
} catch (FileNotFoundException e) {
e.printStackTrace();
} finally {
try {
properties.load(fis);
if (fis != null) fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
String maxIdle = properties.getProperty("jedispool.maxIdle");
String ip = properties.getProperty("jedis.ip");
String port = properties.getProperty("jedis.port");
jedisPool = new JedisPool(ip,Integer.parseInt(port));
jedisPoolConfig.setMaxIdle(Integer.parseInt(maxIdle));
}
private static final ThreadLocal<Jedis> local = new ThreadLocal<>();
public static Jedis getJedis(){
if (local.get() == null) {
local.set(jedisPool.getResource());
}
return local.get();
}
public static void close(){
Jedis jedis = local.get();
if (jedis != null){
local.remove();
jedis.close();
}
}
}
3.测试类
注意事项: 必须关闭防火墙
关闭centos7防火墙 :systemctl stop firewalld
设置开机不启动:systemctl disable firewalld
package com.baizhi.test;
import com.baizhi.utils.JedisUtils;
import org.junit.Test;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
/**
* @Author zxw
* @Descript
* @Time 2020/09/07 18:35
*/
public class TestJedis {
/**
* 用于测试: Jedis连接池
*/
@Test
public void test0(){
// 1.设置连接池参数
JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
// 2.设置最大空闲连接数
jedisPoolConfig.setMaxIdle(2);
// 3.创建jedis连接池对象
JedisPool jedisPool = new JedisPool("192.168.136.128", 6379);
// 4.从连接池中获取jedis对象
Jedis jedis = jedisPool.getResource();
String returnValue = jedis.set("pool", "zxw");
System.out.println("returnValue = " + returnValue);
// 5.释放资源
jedis.close();
}
/**
* 用于测试: 连接jedis
*/
@Test
public void test1(){
Jedis jedis = new Jedis("192.168.136.128", 6379);
jedis.set("user1","admin");
jedis.close();
}
/**
* 用于测试: String类型操作
*/
@Test
public void test2(){
Jedis jedis = new Jedis("192.168.136.128", 6379);
for (int i = 1; i <= 10000; i++) {
jedis.set("k-" + i, "v-" + i);
}
jedis.close();
}
/**
* 用于测试: list类型操作
*/
@Test
public void test3(){
Jedis jedis = new Jedis("192.168.136.128", 6379);
jedis.lpush("name", "xiaoA", "xiaoB", "xiaoC", "xiaoD", "xiaoE");
jedis.close();
}
/**
* 用于测试: set类型操作
*/
@Test
public void test4(){
Jedis jedis = new Jedis("192.168.136.128", 6379);
jedis.sadd("countries", "China", "UA", "USA", "Japan", "France");
jedis.close();
}
/**
* 用于测试: zset类型操作
*/
@Test
public void test5(){
Jedis jedis = new Jedis("192.168.136.128", 6379);
jedis.zadd("films", 10, "babai");
jedis.zadd("films", 9, "xihongshi");
jedis.close();
}
/**
* 用于测试: hash类型操作
*/
@Test
public void test6(){
Jedis jedis = new Jedis("192.168.136.128", 6379);
jedis.hset("user", "username", "zxw");
jedis.hset("user", "password", "123456");
jedis.close();
}
/**
* 用于测试: jedis工具类
*/
@Test
public void test7(){
Jedis jedis = JedisUtils.getJedis();
String value = jedis.get("xixixi");
System.out.println("value = " + value);
JedisUtils.close();
}
}