1. Redis简介
Redis是一个开源(BSD许可),内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理。
它支持字符串、哈希表、列表、集合、有序集合,位图,hyperloglogs等数据类型。内置复制、Lua脚本、LRU收回、事务以及不同级别磁盘持久化功能,同时通过Redis Sentinel提供高可用,通过Redis Cluster提供自动分区
学习网址: https://www.w3cschool.cn/redis/
Redis用途:1. 数据库 2. 缓存
集群:哨兵、主从、分片式
2. Docker中安装Redis
2.1.执行命令
docker run -p 6379:6379 \ -v /home/javaxl/data/myredis/data:/data \ -v /home/javaxl/data/myredis/conf:/usr/local/etc/redis \ -di --name myredis redis:5 \ -- appendonly yes \ --requirepass "123456"
查看正在运行的docker容器
docker ps
2.2.开放防火墙
PS: 关闭防火墙不需要执行
2.2.1.增加防火墙规则
#开放端口 firewall-cmd --zone=public --add-port=6379/tcp --permanent
2.2.2.更新防火墙规则
firewall-cmd --reload
#防火墙列表 firewall-cmd --zone=public --list-ports #防火墙状态 systemctl status firewalld #启动防火墙 systemctl start firewalld #关闭防火墙 systemctl stop firewalld.service systemctl disable firewalld.service
3.安装redis-desktop-manager
3.1.双击安装包
点击next
3.2.同意许可协议
点击I Agree
3.3.选择安装位置
3.4.等待安装完成
3.5.完成安装
3.6.主界面
3.7.点击Connect to Redis Sercer
3.8.新建连接
3.9.连接成功
4.Redis命令
4.1.Redis字符串(string)
# set key 保存 set name zs set age 12 set sex nan # get key //获取 get name # type key //查看类型 type age #string 说明type返回的是键值对存储类型,而不是值存储类型 # keys *或keys key 查看所有或者指定的key keys * # SETEX KEY_NAME TIMEOUT VALUE // 给键值对设置过期时间 setex zs 60 live # ttl key // 获取键值对剩余的存活时间 ttl zs
4.2.Redis哈希
Redis hash 是一个string类型的field和value的映射表,hash特别适合用于存储对象。
# hset key field1 value1 [field2 value2] #同时将多个field-value设置到哈希表key中 hset user name zs age 12 sex nv # hget key field #获取指定的字段值 hget user age # hdel key field #删除指定的字段值 hdel user age # hgetall key #查询指定key的所有字段 hgetall user # hexists key field #查询指定key中的字段是否存在 hexists user name # hlen key #获取指定key中的长度 hlen user
4.3.Redis列表(List)
Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)
# lpush key value1 value2 value3 #将一个或多个值插入到列表头部 lpush en a b c d e f g # llen key #获取列表的长度 llen en # lindex key index #根据索引获取列表中的元素 lindex en 1 #返回f,说明下标从0开始,同时先进后出 # lrange key start sop #查看指定范围内的元素 lrange en 1 3 #返回fed,说明下标从0开始,同时先进后出
4.4.Redis集合(Set)
Redis 的 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。
# sadd key value1 [value2] #向集合添加一个或多个元素 sadd hobby lanqiu zuqiu bingpangqiu zhuoqiu # scard key #获取集合中的元素数量 scard hobby # exists key #是否存在 exists hobby
4.5.有序集合(sort set)
https://www.w3cschool.cn/redis/redis-sorted-sets.html
5.Java代码操作Redis
5.1.添加pom依赖
<dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.9.0</version> </dependency>
5.2.Java连接
package com.zking.ssm.redis; import redis.clients.jedis.Jedis; /** * @Author zjzaki * @Package com.zking.ssm.redis * @Date 2023/8/4 11:26 */ public class Demo01 { public static void main(String[] args) { Jedis jedis = new Jedis("192.168.101.132", 6379); jedis.auth("123456"); System.out.println(jedis.ping()); jedis.select(1); } }
5.2.Java操作redis
5.2.1.Redis字符串(String)
// set key //保存 jedis.set("string_name","wangwu"); // get key //获取 System.out.println(jedis.get("string_name")); //type key //查看类型 System.out.println(jedis.type("string_name")); // keys * 或keys key //查看所有或者指定的key System.out.println(jedis.keys("*")); //SETEX KEY_NAME TIMEOUT VALUE // 给键值对设置过期时间 jedis.setex("string_zs",30,"活着"); // ttl key // 获取键值对剩余的存活时间 System.out.println(jedis.ttl("string_zs"));
5.2.2.Redis哈希(Hash)
//hset key field1 value1 [field2 value2] #同时将多个field-value设置到哈希表key中 jedis.hset("java_user","name","zs"); jedis.hset("java_user","sex","男"); jedis.hset("java_user","age","12"); // hget key field #获取指定的字段值 System.out.println(jedis.hget("java_user", "sex")); // hdel key field #删除指定的字段值 jedis.hdel("java_user","sex"); // hgetall key 查询指定key的所有字段 Map<String, String> java_user_map = jedis.hgetAll("java_user"); System.out.println(java_user_map); // hexists key field 查询指定key中的字段是否存在 Boolean java_user = jedis.hexists("java_user","sex"); System.out.println(java_user); // hlen key 获取指定key中的长度 Long java_user_len = jedis.hlen("java_user"); System.out.println(java_user_len);
5.2.3.Redis列表(List)
//lpush key value1 value2 value3 #将一个或多个值插入到列表头部 jedis.lpush("java_hobby", "篮球", "足球", "羽毛球"); // llen key 获取列表的长度 Long java_hobby_len = jedis.llen("java_hobby"); System.out.println(java_hobby_len); //lindex key index #根据索引获取列表中的元素 System.out.println(jedis.lindex("java_hobby", 0)); // lrange key start sop #查看指定范围内的元素 System.out.println(jedis.lrange("java_hobby", 0, 1));
5.2.4.Redis集合(Set)
// sadd key value1 [value2] 向集合添加一个或多个元素 jedis.sadd("java_set_user","张三","李四","王五","张三丰"); // scard key #获取集合中的元素数量 System.out.println(jedis.scard("java_set_user")); // exists key 是否存在 System.out.println(jedis.exists("java_set_user"));