Redis 是开源、高性能的key-value
数据库,属于 NoSQL 数据库
NoSQL 数据库与关系型数据库
Linux 本地体验需安装 Linux 虚拟机
Linux 安装 Redis 需学到第 15 节
【小白入门 通俗易懂】2021韩顺平 一周学会Linux
https://www.bilibili.com/video/BV1Sv411r7vd?p=15&vd_source=3b9216711765e1ac14ef21c8216ed8eb
redis https://download.redis.io/releases/
选择需要的版本下载即可
此处默认您已会使用 VM 虚拟机运行 Linux 系统,包括 Xshell 与 Xftp
虚拟机输入
ifconfig -a
获取 Linux IP 地址
使用 Xftp 将 Redis 安装包上传到 Linux
使用 Xshell 连接 Linux 输入
ll
查看上传状态然后输入
tar -zxvf Redis 文件名
解压 Redis 压缩包Redis 文件名输入两个字母按下 Tab 键可自动补全
输入
cd
进入到解压后的 Redis 目录
因为 Redis 使用 C 编写,所以需安装 GCC 依赖
输入
yum install -y gcc
这里的
-y
表示一键安装
安装完成后输入
gcc -v
校验安装再输入
make install
安装 Redis
输入
cd utils
进入到utlis
目录
输入
./install_server.sh
执行脚本
这里可能会出现报错,打开脚本注释以下内容后重新执行
执行脚本可对 Redis 进行设置,无特殊需求直接回车结束即可
Redis for Windows 5.0.14.1 https://github.com/tporadowski/redis/releases/tag/v5.0.14.1
Redis 7.0.11 for Windows https://github.com/zkteco-home/redis-windows/releases/tag/7.0.11
选择安装路径,并勾选下方选项,将 Redis 添加到系统环境变量
这个是 Redis 默认的端口号,无特殊需求不用改
设置最大内存限制,无特殊需求不用改
键盘按下 Win + R
输入 cmd
打开命令提示符,输入以下指令
RedisDesktopManager https://github.com/RedisInsight/RedisDesktopManager/releases/tag/2022.5
设置内存分配策略
echo 1 > /proc/sys/vm/overcommit_memory
开放Redis端口
设置Redis配置文件redis.conf
bind 127.0.0.1 ::
- bind 0.0.0.0或使用 # 将bind指令注释掉,则可监听所有IP地址的请求
- 如果Redis服务运行于Internet上,建议仅绑定应用相关的客户端IP地址
port 6379
requirepass 123456
由于Redis的高性能特性,可以在很短的时间内并行尝试大量密码,因此应使用一个高强度的密码
daemonize yes
logfile "/usr/local/redis-3.2.8/log/redis.log"
databases 16
- Redis中不同的可选数据库以命名空间的形式管理,数据文件是同一个2. Redis划分数据库主要用于在必要的情况下分隔同一应用中存储的key(不同数据库中可以使用相同名称的key),而不是为了区分多个应用
dir /data/redisdata/
cd /usr/local/redis-3.2.8/
./bin/redis-server ./etc/redis.conf
启动Redis服务所依据的配置文件
注意daemonize指令设置为no或yes的区别
tail -F /usr/local/redis-3.2.8/log/redis.log
- daemonize为no时,可以另外开启一个会话连接至Redis服务器,并在此会话中跟踪Redis日志内容的变化2. 如果Redis的日志文件路径为默认的 logfile “”,则不会创建日志文件,daemonize为yes时,日志信息会直接输出在控制台中
执行Redis安装目录下bin目录中的redis-cli命令
redis-cli [选项]
选项 | 说明 |
---|---|
-h |
服务器主机地址,默认为127.0.0.1 |
-p |
服务端口,默认为6379 |
-a |
Redis服务访问密码 |
-n |
所要连接的数据库的id,默认为0 |
### 连接到本地Redis服务中dbid为0数据库
cd /usr/local/redis-3.2.8/
./bin/redis-cli
Windows 版 Redis 不支持 daemonize 参数
// 进入到Redis的安装目录下执行
redis-server --service-install redis.windows.conf --loglevel verbose
其他配置参数、使用方式与 Linux 版相同
auth
auth password
quit
set
set key value [ex seconds | px milliseconds] [nx | xx]
- ex:设置指定的过期时间seconds,以秒为单位
- px:设置指定的过期时间milliseconds,以毫秒为单位
- nx:仅在key不存在时设置该key(只创建、不覆盖)
- xx:仅在key已存在时设置该key(只覆盖、不创建)
get
get key
exists
exists key1 [key2 ...]
keys
keys pattern
支持的常用模式如下
h?llo
:匹配单个字符,如hello,hallo,hxllo等h*llo
:匹配任意字符,如hllo,heeeello等h[ae]llo
:包含一个指定字符,如hello或halloh[^ae]llo
:包含除指定字符外的一个字符,如hbllo,hcllo等,不包括hallo和helloh[a-c]llo
:匹配指定范围内的一个字符,如hallo,hbllo,hcllo- 如需匹配以上模式中特殊字符,需要使用
\
转义
del
del key1 [key2 ...]
rename
rename key newkey
expire
expire key timeout
ttl
ttl key
persist
persist key
select
select dbid
flushdb
flushall
Jedis 在 Java 应用中实现 Redis 客户端的功能
Jedis 的使用
public class Xz01 {
public static void main(String[] args) {
Jedis redis = new Jedis("localhost", 6379);
System.out.println(redis.ping());
}
}
先打 jar 包
<dependency>
<groupId>redis.clientsgroupId>
<artifactId>jedisartifactId>
<version>5.0.0-beta2version>
dependency>
<dependency>
<groupId>org.apache.commonsgroupId>
<artifactId>commons-pool2artifactId>
<version>2.11.1version>
dependency>
public class JedisAPI {
private static final JedisPool jedisPool;
static {
JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
jedisPoolConfig.setMaxTotal(50);
jedisPoolConfig.setMaxIdle(10);
jedisPoolConfig.setMinIdle(7);
jedisPoolConfig.setMaxWaitMillis(10000);
jedisPoolConfig.setTestOnBorrow(true);
jedisPool = new JedisPool(jedisPoolConfig, "localhost", 6379, 10000);
// ,"0207",0
}
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 String get(String key) {
Jedis jedis = null;
String value = null;
try {
jedis = jedisPool.getResource();
value = jedis.get(key);
} catch (Exception e) {
e.printStackTrace();
} finally {
if (jedis != null) {
jedis.close();
}
}
return value;
}
public void destroy() {
if ((jedisPool != null) || jedisPool.isClosed()) {
jedisPool.close();
}
}
public String ping() {
Jedis jedis = null;
try {
jedis = jedisPool.getResource();
return jedis.ping();
} catch (Exception e) {
e.printStackTrace();
return "false";
} finally {
if (jedis != null) {
jedis.close();
}
}
}
}
public class Xz02 {
public static void main(String[] args) {
JedisAPI jedisAPI = new JedisAPI();
String set = jedisAPI.ping();
System.out.println(set);
jedisAPI.destroy();
}
}
玄子Share - Java 开发之框架基础技术 8.2