redis安装和集成的简单示例,记录一下过程。可能的问题在最后。
一、在liunx服务器上安装redis
1.下载压缩包
(1)百度搜索redis,找到官网,进去然后Download it,你会得到一个压缩包。把它传到liunx上。
(2)在liunx服务器上使用wget命令,下载资源,如下:
点进去之后往下滚,找到
把wget复制下来,作为linux命令运行,可以直接下载到服务器中。
2.解压安装
运行 tar -zvxf 你的压缩包名 ,然后得到一个文件夹,比如得到了redis-6.0.9。然后我运行了mv redis-6.0.9 /usr/local/redis 将文件夹移动到了/usr/local/redis中。
cd /usr/local/redis,到这样一个目录里面
运行 make命令,这是编译,将.c文件编译为.o文件。如果想再次编译 请先清除,运行make clean命令。 完成之后运行make PREFIX=/usr/local/redis install命令。
这里多了一个关键字 PREFIX=
这个关键字的作用是编译的时候用于指定程序存放的路径。PREFIX后面的/usr/local/redis是安装路径,比如我们现在就是指定了redis必须存放在/usr/local/redis目录。
假设不添加该关键字Linux会将可执行文件存放在/usr/local/bin目 录,库文件会存放在/usr/local/lib目录。配置文件会存放在/usr/local/etc目录。其他的资源文件会存放在usr/local/share目录。
这里指定号目录也方便后续的卸载,后续直接rm -rf /usr/local/redis 即可删除redis。
成功结果:
好的,到这里,redis已经安装成功了。
3.启动
启动的命令:./bin/redis-server ./redis.conf 这个命令的意思是使用redis.conf配置启动redis-server服务,所以要找到redis-server和redis.conf,我的是在安装目录/usr/local/redis中,redis-server在bin里面,当然你也可以把 redis.conf移到和 server在一起,这样就好找了。redis.conf配置文件允许自定义多个,通过启动时指定读取哪个即可。
但是这样启动你会发现一个问题,这是显示启动,你退出,或者比如ctrl c 就会关闭redis,但是我们需要让一直运行,并且能够远程连接,所以我们要改一下配置文件redis.conf。
4.改配置文件
vim进入redis.conf ,输入/ 进行搜索,比如:可以快速找到字符串,按i或者insert键进行编辑。编辑完按esc键退出编辑,输入 :wq 保存退出。
我们需要改这样几个地方,<1> daemonize no修改为daemonize yes,<2> protected-mode改为no,<3> 将requirepass注释打开,并在后边写个密码比如 wy123 ,<4> 注释掉bind,解释如下:
改完重启 首先杀掉进程,如果你启动过redis,先使用ps -ef 找到线程,比如
下面那个 6397 就是了,执行kill -9 21008 就可以结束进程。然后执行启动的redis的命令。再启动时你就发现没有那些图画了,再ps查询,发现redis已经启动,后台启动成功。
5.链接测试
进入到bin目录下,可以看到一个
这个是客户端工具,使用它进行链接,命令是:./redis-cli -h 你服务器的ip -p 6379 回车, 然后输入auth 你的密码 ok就连上了。
二、spring集成jedis
我们已经安装完成了,现在我们在项目中使用redis,需要一个客户端工具,jedis是官方指定的java链接工具,非常简单。
1.首先导入jar包
你是下载jar包还是引入maven都可以,百度搜索maven,然后搜jedis 选个版本,比如我选的2.9.2 。
完成之后,写个测试,如下:
测试成功后,说明jedis可用,但是你发现一个问题,就是最后每次都要close,好麻烦,而且容易忘记,每次还要输入密码之类的,当然可用抽取,但是也麻烦。怎么办呢,数据库都是有链接池的对吧,nosql数据库也有的。
2.链接池commons-pool2
Apache的通用对象池工具common-pool作为资源的管理工具,导入common-pool2的jar包,比如我的是commons-pool2-2.4.2.jar。完成后就可以使用了。
网上有很多介绍如何使用JedisPool jedisPool=new JedisPool(poolConfig,"127.0.0.1",6379);这种方式的示例,但是我们真实开发都是ssm这种带框架的项目,所以要和spring或者springboot集成,下面写一个spring集成的配置。
1.创建redis.properties文件,内容如下:
#最大分配的对象数
redis.pool.maxActive=200
#最大能够保持idel状态的对象数
redis.pool.maxIdle=50
redis.pool.minIdle=10
redis.pool.maxWaitMillis=20000
#当池内没有返回对象时,最大等待时间
redis.pool.maxWait=300
redis.host = 49.233.30.82
redis.port = 6379
redis.timeout=30000
redis.password =wy123
redis.database = 0
2.创建spring-jedis.xml 文件 ,内容:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.3.xsd"
default-lazy-init="false">
<!--Jedis连接池的相关配置-->
<bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">
<!--新版是maxTotal,旧版是maxActive-->
<property name="maxTotal">
<value>${redis.pool.maxActive}</value>
</property>
<property name="maxIdle">
<value>${redis.pool.maxIdle}</value>
</property>
<property name="testOnBorrow" value="true"/>
<property name="testOnReturn" value="true"/>
</bean>
<bean id="jedisPool" class="redis.clients.jedis.JedisPool">
<constructor-arg name="poolConfig" ref="jedisPoolConfig" />
<constructor-arg name="host" value="${redis.host}" />
<constructor-arg name="port" value="${redis.port}" type="int" />
<constructor-arg name="timeout" value="${redis.timeout}" type="int" />
<constructor-arg name="password" value="${redis.password}" />
<constructor-arg name="database" value="${redis.database}" type="int" />
</bean>
</beans>
这就是单机版的配置,就是只有一个redis服务器的,没有集群,集群的网上也有狠多,感兴趣的可以自行百度。
3.把这两个文件引入到spring的配置文件里
这个在proerties引入之后,否则它里面的配置就找不到了。
全部放到classpath下,就是和spring同一级目录。
然后启动项目,写测试代码如下:
我们在最开始用jedis存了一个test,值是123,如果拿到了123,说明我们成功了。
注意事项:
1.安装redis时候可能会报一堆erro,原因是redis需要gcc支持,在linux上安装gcc即可,命令:
yum -y install gcc
yum -y install gcc-c++
yum install make
如果还是报一样的错,说明gcc版本过低,需要升级,我的升级到9就可以了。
2.在使用jedis连接池的时候可能会报错,原因是common-pool2的版本问题,有些版本过高与jdk不符,启动时候回有版本报错,换一下版本就好了。