redis

一、Redis

Reids是一款使用C语言开发的高性的基于键值对的菲关系型数据库。
关系型和非关系型数据库图解
在这里插入图片描述

1、Redis的数据类型(5种)

在这里插入图片描述

1、String

添加

set name dabao

查询

get name

删除

del name

2、hash(Map集合)

添加

hset user name xiaobao
hset user age 20
hset user1 name zhangsan
hset user1 age 23

查询

hget user name		//返回xiaobao

hgetall user       //name xiaobao
					age 20

删除

hdel user name		//把name=xiaobao键值对删除

3、List

添加

lpush mylist apple
lpush mylist orange
rpush mylist balana

查询

lrange mylist 0 -1    // orange apple balana

删除

lpop mylist    //将orange从队列中返回并删除
rpop mylist    //将balana从队列中返回并删除

4、Set

添加

sadd myset a
sadd myset b
sadd myset a

查询

smembers myset   //a b

删除

srem myset a   //将a从集合中移除

5、SortedSet

添加

zadd mysortedset 10  a
zadd mysortedset 30 b
zadd mysortedset 20 c

查询

zrange mysortedset 0 -1      //  a c  b
zrange mysortedset 0 -1 withscores;	// 10  a
										20 c
										30 b

删除

zrem mysortedset a   //将a值移除

2、通用命令

keys *    //查询redis中的所有键
type key	//获取指定键所对应值的类型(string hash list set sortedset)
del key		//将key及所对应的值从redis中删除

3、持久化方案

redis是一个内存数据库,当redis服务器重启,获取电脑重启,数据会丢失,我们可以将redis内存中的数据持久化保存到硬盘的文件中。

RDB

默认方式,不需要进行配置,默认就使用这种机制
在指定时间内,扫描键的变化,如果达到指定数量就持久化。
*after 900 sec (15 min) if at least 1 key changed

AOF

AOF:日志记录的方式,可以记录每一条命令的操作。可以每一次命令操作后,持久化数据。
appendfsync always :每隔一秒持久化一次
appendfsync everysec :每操作一次持久化一次

二、Jedis的使用

1、使用步骤

1、下载jedis的jar包jedis-2.7.0.jar、commons-pool2-2.3.jar
2、在项目中引入jar包
3、创建Jedis对象,并调用其方法完成相关操作

2、使用Jedis操作String

    public void testString(){
        
        Jedis jedis = new Jedis("127.0.0.1",6379);
        
        //保存数据
        jedis.set("name","dabao");
        
        //获取数据
        String name = jedis.get("name");

        //设置保存时间
        jedis.expire("name",60*60);

    }

3、使用Jedis操作Hash

    @Test
    public void testHash(){

        Jedis jedis = new Jedis("127.0.0.1",6379);

        //保存数据
        jedis.hset("user","name","dabao");
        jedis.hset("user","age","20");

        //获取数据
        String name = jedis.hget("user", "name");   //获取到dabao

        Map<String, String> user = jedis.hgetAll("user");//获取到map

        //删除dabao
        jedis.hdel("user","name")

    }

4、使用Jedis操作list

    @Test
    public void testList(){

        Jedis jedis = new Jedis("127.0.0.1",6379);

        //保存数据
        jedis.lpush("mylist","a","b","c");
        jedis.lpush("mylist","d");
        
        //获取数据
        jedis.lrange("mylist",0,-1);    //d c b a

        //删除dabao
        String v = jedis.lpop("mylist");//将d从队列中删除,并返回给变量v
        String v1 = jedis.rpop("mylist")


    }

4、使用Jedis操作set

    @Test
    public void testSet(){

        Jedis jedis = new Jedis("127.0.0.1",6379);

        //保存数据
        jedis.sadd("myset","a","b","a","c");

        //获取数据
        Set<String> set = jedis.smembers("myset");//  a b c(无序)

        //删除dabao
        jedis.srem("myset","a");        //将a删除

    }

5、使用Jedis操作SortedSet

    @Test
    public void testSortedSet(){

        Jedis jedis = new Jedis("127.0.0.1",6379);

        //保存数据
        jedis.zadd("mysortedset",10,"apple");
        jedis.zadd("mysortedset",30,"pear");
        jedis.zadd("mysortedset",20,"orange");

        //获取数据
        Set<String> mysortedset = jedis.zrange("mysortedset", 0, -1); //apple  orange  pear 

        Set<Tuple> mysortedset1 = jedis.zrangeWithScores("mysortedset", 0, -1);
        for(Tuple t: mysortedset1){
            System.out.println(t.getScore()+":"+t.getElement());
        }

        //删除apple
        jedis.zrem("mysortedset","apple")
     

    }

三、Jedis连接池

1、基本使用步骤

JedisPoolConfig config=  new JedisPoolConfig();		//用于给jedis连接池设置参数
config.setMaxTotal(50);
config.setMaxIdle(10)

JedisPool pool = new JedisPool(config,"127.0.0.1",6379);  //创建连接池

Jedis jedis= pool.getResources();			//从连接池获取连接

2、Jedis连接池帮助类

jedis.properties配置文件

host=127.0.0.1
port=6379
maxTotal=50
maxIdle=10

JedisPoolUtils.java

package cn.itcast.utils;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;

import java.io.InputStream;
import java.util.Properties;

public class JedisPoolUtils {

    private static JedisPool pool;

    static{

        try {
            //加载jedis.properties到Properties对象中
            InputStream resourceAsStream = JedisPoolUtils.class.getClassLoader().getResourceAsStream("jedis.properties");
            System.out.println(resourceAsStream);

            Properties properties = new Properties();
            properties.load(resourceAsStream);

            //读取配置文件内容
            String _port = properties.getProperty("port");
            String _maxTotal = properties.getProperty("maxTotal");
            String _maxIdle = properties.getProperty("maxIdle");

            //类型转换
            String host = properties.getProperty("host");
            int port = Integer.parseInt(_port);
            int maxTotal = Integer.parseInt(_maxTotal);
            int maxIdle = Integer.parseInt(_maxIdle);


            //创建Jedis连接池配置对象
            JedisPoolConfig config = new JedisPoolConfig();
            config.setMaxTotal(maxTotal);
            config.setMaxIdle(maxIdle);

            //创建JedisPool连接池
            pool = new JedisPool(config, host, port);
        }catch(Exception ex){
            ex.printStackTrace();
        }
    }


    public static Jedis getJedis(){
        Jedis resource = pool.getResource();
        return resource;
    }

}

注意:
*使用redis缓存一些不经常发生变化的数据。
* 数据库的数据一旦发生改变,则需要更新缓存。
* 数据库的表执行 增删改的相关操作,需要将redis缓存数据清除,再次存入
* 在service对应的增删改方法中,将redis数据删除。

案例:

案例需求:(需要访问redis)
1. 提供index.html页面,页面中有一个省份 下拉列表
2. 当 页面加载完成后 发送ajax请求,加载所有省份
在这里插入图片描述

案例代码:
链接:https://pan.baidu.com/s/18u3rpejE7M1rEL-_GUF1_A
提取码:8lmr

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值