学了很久的Javaweb的相关知识,但只是学会了基本的增删改查,并没有实质上的提高,最近在看一个Redis数据库的简单入门的视频,做了一些学习笔记。并且学完这个知识点之后,我想跟着视频在学习做一个项目。

这篇文章主要讲了以下内容:

一:Redis的使用安装

二:Redis支持的数据结构

三:Redis的命令操作

四:Redis的持久化

五:Jedis的使用

六:使用Redis做一个案例

Redis的使用安装:

首先打开这个网站https://github.com/microsoftarchive/redis/releases

在这个网站中

中文怎么做redis的键_持久化

下载这个redis数据库,然后一直点击安装即可。(记住自己所安装的目录) 

然后进入你所安装的目录:

中文怎么做redis的键_Redis_02

先点击redis-server.exe启动服务端,然后在点击redis-cli.exe启动客户端:

主要出现下面这个界面就意味着安装成功了:

中文怎么做redis的键_持久化_03

Redis支持的数据结构 :

  • String: 字符串
  • Hash: 散列
  • List: 列表
  • Set: 集合
  • Sorted Set: 有序集合

Redis命令操作数据: 

对于String:

增加:set key value

查询:get key 

删除:del key 

中文怎么做redis的键_持久化_04

对于Hash:

增加:hset myhash field value

查询:hget myhash field

删除:del myhash field

中文怎么做redis的键_持久化_05

对于list :

增加:lpush key value  或者是 rpush key value

查询:lrange key start end

删除:del key  或者是 lpop key  或者是 rpop key

中文怎么做redis的键_持久化_06

以上的操作对于有一定数据结构基础的同学来说,很容易理解,具体方式我就不在赘述了。

对于set(不允许有重复的元素存在)

增加  sadd key value

查询 smembers key 

删除 spop 随机删除一个元素  并返回删除的那个元素

中文怎么做redis的键_Redis_07

 

对于有序集合

增加:zadd key number value

查询: zrevrange key value

删除:zrem key value

中文怎么做redis的键_中文怎么做redis的键_08

Redis的持久化 

什么是持久化和为什么要持久化?

用一句话可以将持久化概括为:将数据(如内存中的对象)保存到可永久保存的存储设备中。持久化的主要应用是将内存中的对象存储在数据库中,或者存储在磁盘文件中、 XML 数据文件中等等。

同时,也可以从应用层和系统层这两个层面来理解持久化:

应用层:如果关闭( Close )你的应用然后重新启动则先前的数据依然存在。

系统层:如果关闭( Shutdown )你的系统(电脑)然后重新启动则先前的数据依然存在。

Redis 为什么要持久化?
Redis 中的数据类型都支持 push/pop、add/remove 及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,Redis 支持各种不同方式的排序。与 Memcached 一样,为了保证效率,数据都是缓存在内存中。

对,数据都是缓存在内存中的,当你重启系统或者关闭系统后,缓存在内存中的数据都会消失殆尽,再也找不回来了。所以,为了让数据能够长期保存,就要将 Redis 放在缓存中的数据做持久化存储。

如何对Redis进行持久化----参考这篇文章

Jedis的使用

首先要导入jar包,具体的下载网上的资源很多

然后就可以使用了。 

小栗子:

import redis.clients.jedis.Jedis;

public class RedisStringJava {
        public static void main(String[] args) {
                //连接本地的 Redis 服务
                Jedis jedis = new Jedis("localhost");
                System.out.println("连接成功");
                //设置 redis 字符串数据
                jedis.set("runoobkey", "www.runoob.com");
                // 获取存储的数据并输出
                System.out.println("redis 存储的字符串为: "+ jedis.get("runoobkey"));
        }
}

这还不是最全的,此时在下载一个Commons Pool   jar包,利用 连接池写成一个工具类,这样以后就可以直接拿来使用了:

public class RedisUtil {

    //服务器IP地址
    private static String ADDR = "111.1.1.1";
    //端口
    private static int PORT = 6379;
    //密码
    private static String AUTH = "11111";
    //连接实例的最大连接数
    private static int MAX_ACTIVE = 1024;
    //控制一个pool最多有多少个状态为idle(空闲的)的jedis实例,默认值也是8。
    private static int MAX_IDLE = 200;
    //等待可用连接的最大时间,单位毫秒,默认值为-1,表示永不超时。如果超过等待时间,则直接抛出JedisConnectionException
    private static int MAX_WAIT = 10000;
    //连接超时的时间  
    private static int TIMEOUT = 10000;
    // 在borrow一个jedis实例时,是否提前进行validate操作;如果为true,则得到的jedis实例均是可用的;
    private static boolean TEST_ON_BORROW = true;

    private static JedisPool jedisPool = null;
    //数据库模式是16个数据库 0~15 
    public static final int DEFAULT_DATABASE = 0;
    /**
     * 初始化Redis连接池
     */

    static {

        try {

            JedisPoolConfig config = new JedisPoolConfig();
            config.setMaxTotal(MAX_ACTIVE);
            config.setMaxIdle(MAX_IDLE);
            config.setMaxWaitMillis(MAX_WAIT);
            config.setTestOnBorrow(TEST_ON_BORROW);
            jedisPool = new JedisPool(config, ADDR, PORT, TIMEOUT,AUTH,DEFAULT_DATABASE);

        } catch (Exception e) {

            e.printStackTrace();
        }

    }

    /**
     * 获取Jedis实例
     */

    public synchronized static Jedis getJedis() {

        try {

            if (jedisPool != null) {
                Jedis resource = jedisPool.getResource();
                System.out.println("redis--服务正在运行: "+resource.ping());
                return resource;
            } else {
                return null;
            }

        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }

    }

    /***
     * 
     * 释放资源
     */
    
    public static void returnResource(final Jedis jedis) {
            if(jedis != null) {
                jedisPool.returnResource(jedis);
            }
        
    }
}

使用Redis做一个案例

具体的案例会在另一篇博客中介绍《黑马旅游网(三)优化Servlet和缓存数据》中写了。。。