Redis安装及入门

1.Redis安装

(1):下载Redis
Linux官方下载地址:https://redis.io/download,
Windows64位下载地址:https://github.com/ServiceStack/redis-windows

测试使用的Windows版本,redis-64.3.0.503,下载并解压
Redis安装及入门_第1张图片
(2):修改配置
redis.windows.conf 是Redis相关的配置文件
requirepass 是设置密码,maxmemory 是设置最大内存
增加密码123456,注意 requirepass 123456 顶格,不要有空格,不然会报参数错误。

(3):启动Redis
使用命令提示符,进入Redis目录下,读取配置文件启动 redis-server.exe redis.windows.conf
Redis安装及入门_第2张图片
(4):测试Redis
Redis已启动,再开一个命令提示符,进入到该目录,输入 redis-cli -a 123456 ,使用密码123456 连接Redis,进行测试。
若不使用密码,使用时会报 NOAUTH Authentication required 错误。
Redis安装及入门_第3张图片

(5):安装Redis
但是这样启动Redis是不是很麻烦呢,每次还需要手动启动。我们可以将Redis安装成服务,如同mysql一样。
关闭之前启动的Redis,在Redis目录下执行 redis-server.exe –service-install redis.windows.conf –loglevel verbose 安装。
安装成功后,启动任务管理器,在服务一栏中可以找到Redis,启动(如果经常使用,可以设置开机自启)。
Redis安装及入门_第4张图片
重新连接Redis 进行测试
如果不想每次都进入Redis目录,可以配置Redis的环境变量,将Redis 目录加入path中。
Redis安装及入门_第5张图片

2.使用JAVA操作Redis

JAVA操作Redis需要使用 Jedis 提供的API接口
Jedis Client是Redis官网推荐的一个面向java客户端,库文件实现了对各类API进行封装调用。
想要使用Jedis必须加载jar包或者添加maven依赖,jar包可以自己上网下载。
这里建立一个Maven项目,所以在pom.xml中添加依赖:
(因为使用单元测试,所以一并增加Junit,单元测试不想写在test里,所以不加scope了,任性)

<dependencies>
    <dependency>
        <groupId>redis.clientsgroupId>
        <artifactId>jedisartifactId>
        <version>2.9.0version>
    dependency>
    <dependency>
    <groupId>junitgroupId>
        <artifactId>junitartifactId>
        <version>4.12version>
    dependency>
dependencies>

使用步骤:
  (1):创建Jedis连接池来管理Jedis,设置JedisPool的参数,不写默认host是本机,端口号6379,超时时间2000
  (2): 实例化Jedis,设置登录密码
使用JedisPool的原因是每次创建Jedis实例建立连接很耗费性能,可以从一个连接池中取出连接对象,用完还回去。
使用连接池的方案还能解决很多同步性问题。

import org.junit.Before;
import org.junit.Test;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @author zh
 */
public class RedisTest {
    JedisPool pool;
    Jedis jedis;

    @Before public void setUp() {
        pool = new JedisPool(new JedisPoolConfig(), "127.0.0.1");

        jedis = pool.getResource();
        jedis.auth("123456");
    }

    /**
     * jedis操作字符串
     */
    @Test public void testString() {
        //添加
        jedis.set("key1", "value1");
        System.out.println(jedis.get("key1"));//执行结果:value1

        //修改
        //1、追加
        jedis.append("key1", "value1"); 
        System.out.println(jedis.get("key1"));//执行结果:value1value1
        //2、覆盖
        jedis.set("key1", "value2");
        System.out.println(jedis.get("key1"));//执行结果:value2

        //删除
        jedis.del("key1");
        System.out.println(jedis.get("key1"));//执行结果:null
    }

    /**
     * jedis操作Map
     */
    @Test public void testMap() {
        Map user = new HashMap();
        user.put("name", "zh");
        user.put("pwd", "123456");
        jedis.hmset("user", user);
        System.out.println(jedis.hmget("user", "name"));//执行结果:zh

        //删除map中键值
        jedis.hdel("user","pwd");
        System.out.println(jedis.hmget("user", "pwd")); //执行结果:null
        System.out.println(jedis.hlen("user")); //执行结果:1
        System.out.println(jedis.exists("user"));//执行结果:true
        System.out.println(jedis.hkeys("user"));//返回map对象中的所有key 执行结果:[name]
        System.out.println(jedis.hvals("user"));//返回map对象中的所有value 执行结果:[zh]
    }

    /**
     * jedis操作List
     */
    @Test public void testList() {
        //清空
        jedis.del("letter");

        //存放数据
        jedis.lpush("letter", "a");
        jedis.lpush("letter", "b");
        jedis.lpush("letter", "c");
        System.out.println(jedis.lrange("letter", 0, -1));//执行结果:[c, b, a]
    }

    /**
     * jedis操作Set
     */
    @Test public void testSet() {
        //添加
        jedis.sadd("number", "1");
        jedis.sadd("number", "2");
        jedis.sadd("number", "3");
        jedis.sadd("number", "4");
        System.out.println(jedis.smembers("number"));//执行结果:[1, 2, 3, 4]
        //移除4
        jedis.srem("number", "4");
        System.out.println(jedis.smembers("number"));//执行结果:[1, 2, 3]
        System.out.println(jedis.sismember("number", "1"));//判断1是否是number集合的元素 执行结果:true
        System.out.println(jedis.srandmember("number"));//随机元素
        System.out.println(jedis.scard("number"));//返回集合的元素个数 执行结果:3
    }
}

你可能感兴趣的:(Java)