文章目录
一. Redis简介
-
Redis是一个开源(BSD许可),内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理。
它支持字符串、哈希表、列表、集合、有序集合,位图,hyperloglogs等数据类型。内置复制、Lua脚本、LRU收回、事务以及不同级别磁盘持久化功能,
同时通过Redis Sentinel提供高可用,通过Redis Cluster提供自动分区学习网址:https://www.w3cschool.cn/redis/ www.redis.cn www.redis.net.cn
Redis属于非关系型数据库
Redis用途:1. 数据库 2. 缓存
集群:哨兵、主从、分片式 -
关系型数据库: SQL Server\MySql\Oracle
非关系型数据库(noSQL): Redis(基于内存)\MongoDB(基于文档)\ehcache(基于文件)
二. Redis安装
1. 使用docker进行安装
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 "root"
2. 开放端口刷新防火墙规则
#开放端口
firewall-cmd --zone=public --add-port=6379/tcp --permanent
#跟新防火墙规则
firewall-cmd --reload
#防火墙列表
firewall-cmd --zone=public --list-ports
3. 测试
- 进入到Redis的服务端
docker exec -it myredis /bin/bash
如图代表进入到Redis的服务端
- -h host -a auth
#1.客户端redis-cli链接redis,重新测试(Linux)
./src/redis-cli -h 127.0.0.1 -p 6379 -a root
#2.docker中redis-cli链接redis,重新测试(Linux)
redis-cli -h 127.0.0.1 -p 6379 -a root
ping
select 1
#3.redismanager链接测试成功
显示回显PONG表示连接成功
三. Redis命令
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
2. Redis哈希(Hash)
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
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. Redis集合(Set)
Redis 的 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。
# sadd key value1 [value2] #向集合添加一个或多个元素
sadd hobby lanqiu zuqiu bingpangqiu zhuoqiu
# scard key #获取集合中的元素数量
scard hobby
# exists key #是否存在
exists hobby
5. 有序集合(sort set)
https://www.w3cschool.cn/redis/redis-sorted-sets.html
四. java代码操作Redis
1. Java连接Redis
1. pom依赖
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
</dependency>
2. java连接
Jedis jedis = new Jedis("192.168.195.139", 6379);
jedis.auth("123456");
System.out.println(jedis.ping());
jedis.select(1);
2. Java操作Redis
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"));
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);
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));
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"));