Redis全称Remote Dictionary Server,即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
目前Redis 7.0引入了SSL、新的 RESP3 协议、ACL、客户端缓存、无盘副本、I/O 线程、更快的RDB加载、新模块API和更多改进。
一、准备工作
操作系统:CentOS 7.0,基于VM虚拟机安装在WIN11平台下
1.1 下载Redis客户端
Redis官方网站:Download | Redis Redis中文官方网站:CRUG网站 (redis.cn)
1、下载redis6.2.6安装包
访问https://redis.io/download地址到官网进行下载,本文已最新版redis6.2.6版本演示安装和配置。
可以直接通过上图的Redis官网平台下载安装包,下载后的安装包要通过FTP工具上传到linux环境下,这里我使用Linux自带的命令行工具下载省去了FTP上传的操作,如下:
# 通过命令行下载
wget http://download.redis.io/releases/redis-7.0.0.tar.gz
--2022-05-08 11:05:26-- http://download.redis.io/releases/redis-7.0.0.tar.gz
Resolving download.redis.io (download.redis.io)... 45.60.125.1
Connecting to download.redis.io (download.redis.io)|45.60.125.1|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 2943054 (2.8M) [application/octet-stream]
Saving to: ‘redis-7.0.0.tar.gz’
100%[============================================================================================================================================================>] 2,943,054 4.02MB/s in 0.7s
2022-05-08 11:05:27 (4.02 MB/s) - ‘redis-7.0.0.tar.gz’ saved [2943054/2943054]
# 检查下载文件是否成功
[root@huxing software]# ll -l
total 2876
-rw-r--r--. 1 root root 2943054 Apr 27 21:46 redis-7.0.0.tar.gz
[root@huxing software]#
# 解压到本地
[root@huxing software]# tar -zxvf redis-7.0.0.tar.gz
# 拷贝解压后的安装文件到目录下
[root@huxing local]# cp -r /home/software/redis-7.0.0 /usr/local/
[root@huxing local]# cd redis-7.0.0/
[root@huxing redis-7.0.0]# ls
00-RELEASENOTES CONDUCT COPYING INSTALL MANIFESTO redis.conf runtest-cluster runtest-sentinel sentinel.conf tests utils
BUGS CONTRIBUTING deps Makefile README.md runtest runtest-moduleapi SECURITY.md src TLS.md
[root@huxing redis-7.0.0]#
redis简单命令
官网下载redis安装包。拖到redis目录下
用命令解压 例如 tar xzf redis-6.2.6.tar.gz
cd redis
然后输入命令
make
如果报错
yum install -y gcc g++ gcc-c++ make make MALLOC=libc 在make 再报错 yum -y install centos-release-scl yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils scl enable devtoolset-9 bash echo "source /opt/rh/devtoolset-9/enable" >> /etc/profile gcc -v
再输入
make install
报错就输入sudo
make install
redis-server 启动redis
出现就成功了!!!
ps -ef|grep redis 检查redis是否启动redis-server 启动redis Select 【数字】 转到第几个数据库 Dbsize 查看当前数据库有多少个key Keys * 当前库的key查询出来 Flushdb 清除当前库 Flushall 清除所有库 Auth 【密码】 认证密码 Exists【key的名字】 判断某个key是否存在 Move key 【db序号】 将当前库的key剪切到指定db序号 Expire key【时间秒】 为给定的key设置过期时间,过期后会移除系统 Ttl key 查看还有多少秒过期,-1表示永远不过期,-2表示已过期 Type key 查看你的key是什么类型 Del key 删除key
string类型
Set key value 设置key,value Get key 获得值key对应的value的值 Strlen key 获得key对应的value的长度 Incr key 对key对应的value的值自增1 Incrby key 【数字】 指定数字递增 Decr key 对key对应的value的值自减1 Decrby key 【数字】 指定数字递减 Getrange key 0 -1 显示指定范围的key对应的value值(0到-1显示全部)Setrange key 0 x 从零开始,修改原来的值,将原来的修改;原来为“10”执行后 为“x0” Setex key 【过期时间秒】 value 设置值的同时给定过期时间 Setnx key value 若key不存在,设置value值才会成功 Mset key value key value key value 一次性设置多个值 Mget key key key 一次性获得多个值 Msetnx key value key value 一次性设置多个之前不存在的值,若其中有一个key存在的话就不 会成功
list类型
Lpush key value value value 存值,结果先进后出 Rpush key value value value 存值,结果按顺序,先进先出 Lrange key 0 -1 查看list中的数据(0到-1显示全部) Lpop key 出栈,从左到右,每次出栈一个元素,相当于从 list中删除 Rpop key 出栈,从右到左,每次出栈一个元素,相当于从 list中删除 Lindex key 【下标】 具体显示list中角标对应的值,从0开始计数Lrem key 【数字】 【元素】 删除list中几个相同的元素 Ltrim key 【下标1】【下标2】 截取出保存下标1到下标2的元素,其他下标对应的 元素被删除 Lset key 【下标】 【元素】 修改list数字中对应下标的元素 Linsert key before/after 【元素1】【元素2】 在元素1的前面/后面 插入元素2,若元素1有多个,则只对最前面的那个匹配元素1的元素的前后进行操作
set类型
Sadd key 【元素1】【元素2】【元素3】 一次性添加多个元素,会自动去重 Smembers key 查看当前key中的所有元素 Scard key 获取元素个数 Srem key 【元素】【元素】【元素】 删除指定元素 Srandmember key 【数字】 在指定的set中随机的显示三个数字 Spop key 【数字】 随机出栈指定的个数个元素 Smove key1 key2 【key1中的元素】 将key1中的元素剪切到key2中 Sdiff key1 key2 显示出存在于set1中但不存在于set2中的元素 Sinter key1 key2 显示出key1和key2共同拥有的元素 交集 Sunion key1 key2 显示出key1和key2两者相加的所有元素 并集
hash类型
Hset hash key1 value1 key2 value2 设置值,hash允许重复 当key重复的时候会覆 盖前面出现的key Hget hash key 获取value Hgetall hash 获取所有的key和value Hmset hash key1 value1 key2 value2 一次存一个对象的多个不同的value Hdel hash key 删除指定的key Hlen hash 查看长度 Hexists hash key 判断hash中key是否存在 Hkeys hash 获取所有的key值 Hvals hash 获取所有的value值 Hincrby hash key 【整数数字】 指定的key按指定的数字递增 Hincrbyfloat hash key 【小数】 指定的key按指定的小数递增 Hsetnx hash key value 若key值在hash中不存在就添加
zset类型
zset(key value) key值必须是数字(key为序号,依据此序号来排序) Zadd zset key1 value1 key2 value2 一次性添加多个数据 Zrange zset 0 -1 显示所有的value值,当范 围为 0 到 -1 时显示全部,下标从0开始 Zrange zset 0 -1 withscores 现在所有的key和value,当范围为 0 到 -1 时显 示全部,下标从0开始 Zrangebyscore zset 【key1】【key2】 显示key1到key2之间的key的值(包含数字1和数 字2) 数字2比数字1大 Zrangebyscore zset 【(key1】【key2】 显示key1到key2之间的key的值(加了前括号就 不包含改数字) zrangebyscore zset 【key1】【key2】 limit【key3】【数字4】 从结果中截取key3开始截取 数字4 个元素 Zrem zset value1 value2 value3 删除指定的key中的value Zcard zset 统计zset中key的个数 Zcount zset 【key1】【key2】 统计key1到key2之间的key个数 Zrank zset value 通过value的值value所在的下标 Zscore zset value 获取key的值 Zrevrank zset value 显示倒叙过来的下标 Zrevrange zset 0 -1 倒叙显示所有 valueZrevrangbyscore zset [key1] [key2] 倒叙显示key1到key2的之间的value值
idea中使用redis
<dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>3.2.0</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.62</version> </dependency>测试连接
import redis.clients.jedis.Jedis;
public class RedisTest { public static void main(String[] args) { //连接本地的 Redis 服务 Jedis jedis = new Jedis("服务器地址", 6379); String response = jedis.ping(); System.out.println(response); // PONG }
}
使用string
import redis.clients.jedis.Jedis; import java.util.Set; public class Redis_String { public static void main(String[] args) { //连接本地的 Redis 服务 Jedis jedis = new Jedis("服务器地址", 6379); String response = jedis.ping(); System.out.println(response); // PONG //删除当前选择数据库中的所有key System.out.println("删除当前选择数据库中的所有key:"+jedis.flushDB()); //Spring实例 //设置 redis 字符串数据 //新增<'name','yixin'>的键值对 jedis.set("name", "yixin"); // 获取存储的数据并输出 System.out.println("redis 存储的字符串为: "+ jedis.get("name")); //判断某个键是否存在 System.out.println("判断某个键是否存在:"+jedis.exists("name")); //系统中所有的键 Set<String> keys = jedis.keys("*"); System.out.println(keys); //按索引查询 System.out.println("按索引查询:"+jedis.select(0)); //查看键name所存储的值的类型 System.out.println("查看键name所存储的值的类型:"+jedis.type("name")); // 随机返回key空间的一个 System.out.println("随机返回key空间的一个:"+jedis.randomKey()); //重命名key System.out.println("重命名key:"+jedis.rename("name","username")); System.out.println("取出改后的name:"+jedis.get("username")); //删除键username System.out.println("删除键username:"+jedis.del("username")); //删除当前选择数据库中的所有key System.out.println("删除当前选择数据库中的所有key:"+jedis.flushDB()); //查看当前数据库中key的数目 System.out.println("返回当前数据库中key的数目:"+jedis.dbSize()); //删除数据库中的所有key System.out.println("删除所有数据库中的所有key:"+jedis.flushAll()); }
使用list
import redis.clients.jedis.Jedis; import java.util.List; public class Redis_List { public static void main(String[] args) { //连接本地的 Redis 服务 Jedis jedis = new Jedis("服务器地址", 6379); String response = jedis.ping(); System.out.println(response); // PONG System.out.println("删除当前选择数据库中的所有key:"+jedis.flushDB()); //List实例 //存储数据到列表中 jedis.lpush("list", "num1"); jedis.lpush("list", "num2"); jedis.lpush("list", "num3"); // 获取存储的数据并输出 List<String> list = jedis.lrange("list", 0 ,-1); for(int i=0; i<list.size(); i++) { System.out.println("列表项为: "+list.get(i)); } }
使用事务
import com.alibaba.fastjson.JSONObject; import redis.clients.jedis.Jedis; import redis.clients.jedis.Transaction; public class Redis_Transaction { public static void main(String[] args) { //连接本地的 Redis 服务 Jedis jedis = new Jedis("服务器地址", 6379); String response = jedis.ping(); System.out.println(response); // PONG //事务测试 jedis.flushDB(); JSONObject jsonObject = new JSONObject(); jsonObject.put("hello","world"); jsonObject.put("name","yixin"); //开启事务 Transaction multi = jedis.multi(); String result = jsonObject.toJSONString(); // jedis.watch(result) try { multi.set("user1", result); multi.set("user2", result); int i = 1 / 0; // 代码抛出异常事务,执行失败! multi.exec(); // 执行事务! }catch (Exception e){ multi.discard();// 放弃事务 e.printStackTrace(); }finally { System.out.println(jedis.get("user1")); System.out.println(jedis.get("user2")); jedis.close(); } }
安装redis稳定版!!!!!!!
在linux环境下直接复制一下代码 (无需去官方手动下载资源)
# 添加软件安装源yum install epel-release# 安装 redisyum install redis -y# 启动 redis 、启动 redis 哨兵systemctl start redis# 允许开机启动systemctl enable redis# 之后进行配置修改:重启启动服务
# 主机修改 redis 配置文件: /etc/redis.conf# 1. 修改绑定 ip 为服务器内网 ip 地址,做绑定,三台各自填写各自的 ip 地址bind 192 .168.50.150# 2. 保护模式修改为否,允许远程连接protected-mode no# 4. 设定密码requirepass ok# 5. 设定主库密码与当前库密码同步,保证从库能够提升为主库masterauth ok# 6. 打开 AOF 持久化支持appendonly yes