Windows系统安装Redis
1、修改配置(可参考Linux配置)
修改Redis配置文件(服务模式启动)redis.windows-service.conf
,前台方式启动时使用的配置文件为redis.windows.conf
bind 127.0.0.1 ::1 # 将本地地址绑定注释掉,否则不能远程连接
port 6379 # 配置监听端口
daemonize yes # 开启后台模式
pidfile /var/run/redis_6379.pid # 指定pid文件位置
protected-mode yes # 开启受保护模式
requirepass lilibo # 设置鉴权密码
2、安装服务
redis-server --service-install redis.windows-service.conf --loglevel verbose
3、启动服务
redis-server --service-start
4、启动客户端连接
redis-cli
如果设置了密码(保护模式)登录后执行以下命令输入密码:
auth pass
或者使用带参数的方式启动redis-cli
客户端:
redis-cli -h your_hostname -p 6379 -a your_auth
注:配置文件redis.windows-service.conf
中找到如下两项修改
protected-mode yes # 是否开启密码模式
requirepass lilibo # 设置密码
5、停止Redis服务(根据需要使用)
redis-server --service-stop
6、卸载Redis服务(根据需要使用)
redis-server --service-uninstall
Linux系统安装Redis
首先下载Redis(从Linux服务器上下载Redis可使用如下地址:)
wget http://download.redis.io/releases/redis-6.2.1.tar.gz
1、在/etc目录下新建redis目录,解压redis-6.2.1.tar.gz
文件
cd /etc
mkdir redis
mkdir /usr/local/redis
tar -zxvf redis-6.2.1.tar.gz
cd redis-6.2.1
2、进行编译安装,指定安装位置为:/usr/local/redis
make distclean
make
make install
3、将下载后的redis-6.2.1/redis.conf
文件复制一份到/etc/redis
目录下,并命名为6379.conf
cd ~/root/redis-6.2.1/
cp redis.conf /etc/redis/6379.conf
4、将redis的启动脚本复制一份放到/etc/init.d目录下
cp /usr/local/redis/utils/redis_init_script /etc/init.d/redisd
5、修改Redis配置文件/etc/redis/6379.conf
# bind 127.0.0.1 ::1 # 将本地地址绑定注释掉,否则不能远程连接
port 6379 # 配置监听端口
daemonize yes # 开启后台模式
pidfile /var/run/redis_6379.pid # 指定pid文件位置
protected-mode yes # 开启受保护模式
requirepass lilibo # 设置鉴权密码
6、修改Redis启动脚本/etc/init.d/redisd
否则停止Redis时会报错:
(error) NOAUTH Authentication required.
修改启动脚本:
#!/bin/sh
REDISPORT=6379
EXEC=/usr/local/redis/src/redis-server
CLIEXEC=/usr/local/redis/src/redis-cli
PIDFILE=/var/run/redis_${REDISPORT}.pid
CONF="/etc/redis/${REDISPORT}.conf"
PASSWORD=$(cat $CONF|grep '^\s*requirepass'|awk '{print $2}'|sed 's/"//g')
case "$1" in
start)
if [ -f $PIDFILE ]
then
echo "$PIDFILE exists, process is already running or crashed"
else
echo "Starting Redis server..."
$EXEC $CONF
fi
;;
stop)
if [ ! -f $PIDFILE ]
then
echo "$PIDFILE does not exist, process is not running"
else
PID=$(cat $PIDFILE)
echo "Stopping ..."
if [ -z $PASSWORD ]
then
$CLIEXEC -p $REDISPORT shutdown
else
$CLIEXEC -a $PASSWORD -p $REDISPORT shutdown
fi
while [ -x /proc/${PID} ]
do
echo "Waiting for Redis to shutdown ..."
sleep 1
done
echo "Redis stopped"
fi
;;
*)
echo "Please use start or stop as first argument"
;;
esac
7、启动Redis服务
service redisd start
8、停止Redis服务(需要时使用)
service redisd stop
使用Jedis操作Redis的代码实现如下
1.构建JedisPoolConfig及JedisPool,首先构建连接池配置对象JedisPoolConfig,并在其基础上构建Jedis连接池对象JedisPool
package com.bdqn.demo;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
public class JedisAPI {
private static JedisPool jedisPool;
static {
//创建并配置连接池配置对象
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxTotal(50);
config.setMaxIdle(10);
config.setMinIdle(7);
config.setMaxWaitMillis(1000);//获取资源的等待时间
config.setTestOnBorrow(true);//获取资源时是否验证资源的有效性
//创建JEDIS连接池
jedisPool = new JedisPool(config,//连接池配置对象
"127.0.0.1",//Redis服务器地址
6379,//Redis服务器端口
10000,//连接超时时间
"123456",//Redis密码
0);//数据库索引
}//static结束
public void destroy() {
if (!(jedisPool == null || jedisPool.isClosed())) {
jedisPool.close();//关闭连接池
}
}
public boolean set(String key,String value) {
Jedis jedis=null;
try {
jedis = jedisPool.getResource();
jedis.set(key, value);
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
} finally {
if (jedis != null) {
jedis.close();
}
}
}
public boolean set(String key,int seconds,String value) {
Jedis jedis=null;
try {
jedis = jedisPool.getResource();
jedis.setex(key, seconds, value);
return true;
} catch (Exception e) {
e.printStackTrace();
} finally {
if (jedis != null) {
jedis.close();
}
}
return false;
}
/**
* 判断某个key是否存在
* @param key
* @return
*/
public boolean exists(String key) {
Jedis jedis=null;
try {
jedis = jedisPool.getResource();
return jedis.exists(key);
} catch (Exception e) {
e.printStackTrace();
} finally {
if (jedis != null) {
jedis.close();
}
}
return false;
}
/**
* 获取连接
* @param key
* @return
*/
public String get(String key) {
String value=null;
Jedis jedis=null;
try {
jedis = jedisPool.getResource();
return jedis.get(key);
} catch (Exception e) {
e.printStackTrace();
} finally {
if (jedis != null) {
jedis.close();
}
}
return value;
}
public Long ttl(String key){
Jedis jedis=null;
try {
jedis = jedisPool.getResource();
return jedis.ttl(key);
} catch (Exception e) {
e.printStackTrace();
} finally {
if (jedis != null) {
jedis.close();
}
}
return (long) -2;
}
/**
* 删除
*/
public void delete(String key) {
Jedis jedis=null;
try {
jedis = jedisPool.getResource();
jedis.del(key);
} catch (Exception e) {
e.printStackTrace();
} finally {
if (jedis != null) {
jedis.close();
}
}
}
}
在上面的基础上增加操作Redis所需的方法
package com.bdqn.demo;
import org.junit.After;
import org.junit.Test;
import static org.junit.Assert.assertNull;
public class JedisTest {
private JedisAPI jedisAPI;
@org.junit.Before
public void startUp() throws Exception{
jedisAPI = new JedisAPI();
}
@After
public void tearDown() throws Exception {
if (jedisAPI != null) {
jedisAPI.destroy();
}
}
@Test
public void test(){
assertNull(jedisAPI.get("haha"));
}
}
标签:Redis,redis,jedis,key,null,public
From: https://blog.csdn.net/2301_78714573/article/details/140304837