在当前的开发环境中,学习分布式缓存是开发里面的重要环节之一。
最近学习了一下redis,虽然网络上一大把教程和笔记,但是每个人的学习经历不一样,好记性不如烂笔头,在这里记录一下学习内容,就算给自己加深一些印象吧。
准备工作
1、redis下载
redis需要到官网上下载redis相关的压缩包,根据自己的需要选择相应的版本。我这里学习用到的是现在这个时间的最近的版本,redis5.0.3版本,linux系统是centos7
新版本里面的部分命令和老版本的命令不一致,譬如redis的集群 ,redis主从复制配置等,在配置文件中有少许变动
废话太多,下面上redis安装步骤
2、上传到centos服务器的 /usr/local/src目录下,解压
tar zxvf redis-5.0.3.tar.gz
#进入redis目录
cd redis-5.0.3
#编译
make
#编译完成之后,指定安装目录,我这里redis安装到/usr/local/redis目录下,这里指定目录的时候不需要考虑目录是否存在,不存在的话安装的过程中会主动创建
make PREFIX=/usr/local/redis install
3、安装完成之后, 可以在/usr/local路径下找到redis目录,进入会看到一个bin目录,该目录里面的结构如下图
到这里,redis的安装也差不多了,接下来就是redis的相关配置
copy一份redis.conf到redis安装目录下,方便后期自定义配置
cp /usr/local/src/redis-5.0.3/redis.conf /usr/local/redis/
redis相关配置就是redis.conf文件
redis配置文件修改属性值,设置为后台启动,这样不会阻塞进程,在当前回话窗口可以继续操作其他
daemonize yes
测试一下redis默认配置启动
#启动服务器
./bin/redis-server ./redis.conf
#进入redis客户端,默认端口,6379,这里省略了默认端口输入 -p 6379
./bin/redis-cli
进入客户端
测试输入ping 返回pong则表示redis安装 启动成功!
接下来就是redis的相关配置,
需要注意的地方:
#配置访问ip,默认是127.0.0.1,本地访问,但是在项目中想要远程访问就需要将地址改成0.0.0.0 bind 0.0.0.0 #缓存方式配置 #启用rdb缓存方式,默认方式rdb rdbchecksum yes #rdb名称 dbfilename dump.rdb #rdb的目录 dir ./ #aof方式,默认不启用no,如果启用设置yes appendonly no #aof名称 appendfilename "appendonly.aof" #redis密码 requirepass foobared
#设置redis端口,默认6379
port 6379 #主从复制配置 #配置redis主从关系,通常情况下一个主库需要至少两个从库,如果设置主从复制关系,则需配置主库ip和端口 #replicaof <masterip> <masterport> #如果主库redis设置了密码,这需要设置 # masterauth <master-password>
配置方面就这些,其实也挺简单的,但是不会的时候就觉得挺难的
配置完成之后,需要在服务器防火墙中添加redis对应的端口或者关闭防火墙才可以远程连接,不然java客户端Jedis无法连接
centos7 添加防火墙的方法:
firewall-cmd --zone=public --add-port=7799/tcp --permanent
firewall-cmd --reload
==============================================
java代码操作redis
在java项目中添加redis客户端jar包,maven项目添加依赖
<!-- https://mvnrepository.com/artifact/redis.clients/jedis --> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.9.0</version> </dependency>
java测试代码一
public class RedisTest { public static void main(String[] args) { //jedis连接redis数据库,host String类型,redis的ip,port int类型 Jedis jedis = new Jedis("192.168.1.10", 7799); //password redis.conf中设置密码 jedis.auth("dayu"); Set<String> keys = jedis.keys("*"); for (String key : keys) { System.out.println(key); // .... // redis相关的命令在jedis中都可以操作 } } }
java测试代码二,连接池获取jedis信息
public static void test2() { //配置jedis连接池信息 JedisPoolConfig jedisPoolConfig = new JedisPoolConfig(); //...其他配置,这里的配置只是测试使用,并没有做过多思考 jedisPoolConfig.setMaxIdle(20); jedisPoolConfig.setMinIdle(5); jedisPoolConfig.setMaxTotal(1000); jedisPoolConfig.setBlockWhenExhausted(true); //装配到JedisPool中 JedisPool pool = new JedisPool(jedisPoolConfig, "192.168.1.10",7799); //从连接池中获取jedis Jedis jedis = pool.getResource(); //如果redis配置了密码,这里需要设置连接密码信息 jedis.auth("dayu"); //redis的相关操作 jedis.set("city", "nanjing"); System.out.println(jedis.get("city")); }
到这里redis的单机版就算是告一段落了,后面再记录集群版,多机主从配置的学习记录