【一】redis安装和操作命令及jedis的使用

一、redis的安装

官网 :https://redis.io
下载redis的版本建议选择偶数结尾的版本,因为奇数版本的一般都属于预测版。

步骤

  1. 安装依赖环境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的全局命令

  1. 遍历展示所有的key: keys *
  2. 统计key的总数: dbsize
  3. 设置过期时间: expire key时间/秒
  4. 查看key的剩余过期时间: ttl key

返回正数,代表key剩余多少秒过期
返回-1, 代表指定的key存在,并没有设置过期策略
返回-2,代表指定的key过期不存在了

  1. 取消key 的过期时间设置: persist key
  2. 删除指定的key : del key
  3. 清除所有的key:
    flushdb 仅仅清除当前子库下所有的key
    flushall 清除所有子库中的key
  4. 切换子库 select index

redis中的子库 : 默认redis提供了16个子库,以下标的形式标识,从0-15个编号
当我们登录到redis的时候,默认进入的是0号子库

  1. 查看命令帮助文档: help 命令名
  2. 退出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();
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值