Redis 通常被称为数据结构服务器,因为值(value)可以是字符串(String)、哈希(Hash)、列表(list)、集合(sets)和有序集合(sorted sets)等
一、下载redis方法
方法一:取官方下载,然后用winscp等工具传到Ubuntu中
方法二:从官网获取到下载链接,然后直接再linux系统中使用wget命令下载文件
redis官网:https://redis.io/download/
ubuntu的下载链接:https://download.redis.io/releases/redis-6.2.7.tar.gz
源码地址:https://github.com/redis/redis
Redis 在线测试:http://try.redis.io/
Redis 命令参考:http://doc.redisfans.com/
二、解压安装
1.解压安装
# wget https://download.redis.io/releases/redis-6.2.7.tar.gz # tar xzf redis-6.2.7.tar.gz
# cd redis-6.0.8
# make
2.执行完 make 命令后,redis的 src 目录下会出现编译后的 redis 服务程序 redis-server,还有用于测试的客户端程序 redis-cli:
下面启动 redis 服务:
# cd src
# ./redis-server
3.也可以通过启动参数告诉 redis 使用指定配置文件使用下面命令启动。(ctrl+C可以退出服务)
# cd src
# ./redis-server ../redis.conf
4.使用测试客户端程序 redis-cli 和 redis 服务交互了。
# cd src
# ./redis-cli
redis> set star zhai
OK
redis> get star
"zhai"
三、配置Redis
详见:https://www.runoob.com/redis/redis-conf.html
1.查看配置 格式
redis 127.0.0.1:6379> CONFIG GET CONFIG_SETTING_NAME
CONFIG GET * 获取所有配置项
redis 127.0.0.1:6379> CONFIG GET loglevel
2.编辑配置 通过修改 redis.conf 文件或使用 CONFIG set 命令来修改配置。
格式:redis 127.0.0.1:6379> CONFIG SET CONFIG_SETTING_NAME NEW_CONFIG_VALUE
设置密码
CONFIG set requirepass "你的密码"
此后重连接使用时,需要先输入密码 AUTH 你的密码
三、数据类型
Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)
1.String
可以理解成与 Memcached 一模一样的类型,string 类型的值最大能存储 512MB。
set testkey "starzhai"
get testkey
2.Hash(哈希) 类似于两层嵌套的key-value
Redis hash 是一个键值(key=>value)对集合。
Redis hash 是一个 string 类型的 field 和 value 的映射表,hash 特别适合用于存储对象。
每个 hash 可以存储 232 -1 键值对(40多亿)
del testkey hmset testkey keyname1 "hello" keyname2 "xingxing" hmget testkey keyname1 hmget testkey keyname2
3.List列表
Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。
入队:push 出队range 分别有l r左右两种方向
#队列是入尾出头 rpush lrange 以下内容为左入左出类似于栈
del testkey
lpush testkey tianjinshi
lpush testkey nankaiqu
lpush testkey hongqinanlu
lrange testkey 0 5
4.set 集合
Redis 的 Set 是 string 类型的无序集合。
集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。
增:sadd keynames member 查:sembers keynames
del testkey
sadd testkey tianjin
sadd testkey nankai
sadd testkey tianjin
#重复元素添加不进去
smembers testkey
5.ZSET有序集合
Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。
不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。
zset的成员是唯一的,但分数(score)却可以重复。
增:zadd key score member
查 zrangebyscore runoob 0 100
127.0.0.1:6379> del testkey (integer) 1 127.0.0.1:6379> zadd testkey 0 s (integer) 1 127.0.0.1:6379> zadd testkey 2 a (integer) 1 127.0.0.1:6379> zadd testkey 3 r (integer) 1 127.0.0.1:6379> zadd testkey 0 t (integer) 1 127.0.0.1:6379> zadd testkey 4 s (integer) 0 127.0.0.1:6379> zrangebyscore testkey 0 10 1) "t" 2) "a" 3) "r" 4) "s" 127.0.0.1:6379>
后来重复添加的value s 对应的score4替换掉原来的score0
五、redis命令
1.启动客户端
redis-cli
执行ping命令,若redis服务已启动会返回pong
$redis-cli -h 127.0.0.1 -p 6379 -a "mypass" redis 127.0.0.1:6379> redis 127.0.0.1:6379> PING PONG
六、Redis连接(不区分大小写)
1.验证密码 AUTH password
2.打印字符串 ECHO
3.查看服务是否运行 PING
4.关闭当前连接 QUIT
5. 切换到指定的数据库 SELECT index
七、数据备份与恢复
备份:save、bgsave(后台备份)
在安装目录中创建dump.rdb文件
恢复:如果需要恢复数据,只需将备份文件 (dump.rdb) 移动到 redis 安装目录并启动服务即可。获取 redis 目录可以使用 CONFIG 命令,如下所示:
到rbp目录下 config get dir
八、Java使用Redis
相关配置
(1)配置redis
①设置密码
config set requirepass "root"
②打开redis根目录下的redis.conf (找不到可以用whereis命令)
whereis redis.conf
注释掉bind 127.0.0.1::1
将protected-mode yes改为no
③关闭防火墙(我的服务器没开着 所以没操作这步)
④重启虚拟机和redis
⑤新建maven项目,添加redis.clients依赖:https://mvnrepository.com/artifact/redis.clients/jedis
需要下载或依赖jedis.jar驱动包,在classpath中包含该驱动包
https://mvnrepository.com/artifact/redis.clients/jedis
1.连接redis服务
import redis.clients.jedis.Jedis; public class Solution { public static void main(String[] args) { //连接本地的 Redis 服务 Jedis jedis = new Jedis("59.67.152.192",6379 ); // 如果 Redis 服务设置了密码,需要下面这行,没有就不需要 jedis.auth("root"); System.out.println("连接成功"); //查看服务是否运行 System.out.println("服务正在运行: "+jedis.ping()); } }
2.Redis Java String
import redis.clients.jedis.Jedis;
public class Solution {
public static void main(String[] args) {
//连接本地的 Redis 服务
Jedis jedis = new Jedis("59.67.152.192",6379
);
// 如果 Redis 服务设置了密码,需要下面这行,没有就不需要
jedis.auth("root");
// System.out.println("连接成功");
//向redis中写入数据
jedis.set("key1","value1");
//从redis中读数据
String res=jedis.get("key1");
System.out.println("key1对应的值为: "+res);
}
}
3.Redis Java List