目录
一.初识Redis
1.1SQL 和 NoSql的区别
1.2 认识Redis
特征:
- 键值(key-value)型,value支持多种不同数据结构,功能丰富
- 单线程,每个命令具备原子性
- 低延迟,速度快(基于内存、IO多路复用、良好的编码)。
- 支持数据持久化(定期将内存搬运到磁盘)
- 支持主从集群、分片集群(数据拆分)
- 支持多语言客户端
二.启动连接+使用
1.先在安装好的redis文件夹下打开
然后就可以直接打开 cmd 命令行窗口 , 在命令行中执行
redis-cli
进入 Redis 客户端
即可开始使用
2. 进入计算机服务中(右键计算机-->管理-->服务和应用程序-->服务),再在右侧找到Redis名称的服务,查看启动情况。如未启动,则手动启动之。
然后即可如方法一操作
注意:用RDM图形化工具也可以 只要先启动了redis 用RDM和cmd窗口均可命令行操作
三.Redis命令
1.String
如果Value是一个Java对象,例如一个User对象,则可以将对象序列化为JSON字符串后存储:
2.Hash
本身Redis就是一个key-value的结构,而hash的value还是一个key-value的结构
支持对单个值进行修改
3.List
从左侧推
lpush users 1 2 3
从右侧推
从左侧右侧弹出
lpop users 1
rpop users 1
阻塞弹出 blpop/brpop key second
blpop user1 100
4.Set
Set的常见命令有:
- SADD key member … :向set中添加一个或多个元素
- SREM key member … : 移除set中的指定元素
- SCARD key: 返回set中元素的个数
- SISMEMBER key member:判断一个元素是否存在于set中
- SMEMBERS:获取set中的所有元素
- SINTER key1 key2 … :求key1与key2的交集
sadd s1 a b c
sadd zs lisi wnagwu zhaoliu
sadd ls wangwu mazi ergouscard zs
sinter zs ls
adiff zs ls
sunion zs ls
ismember zs lisi
ismember ls zhangsan
srem zs lisismembers zs
smembers ls
5.SortedSet
每个元素都带上分数,所以才能实现排序
zadd stus 85 jack 89 Lucy 82 Rose 95 Tom 78 Jerry 92 Amy 76 Miles
zrem stus Tom
zscore stus Amy
zrank stus Rose //升序 zrevrank stus Rose//降序
zcount stus 0 80
zincrby stus 2 Amy
zrange stus 0 2 //升序 zrevrange stus 0 2 //降序
zrangebyscore stus 0 80
三.Redis的java客户端
1.Jedis
在Redis官网中提供了各种语言的客户端,地址:https://redis.io/docs/clients/
基本用法
(1) 导入依赖
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>3.8.0</version>
</dependency>
(2) 建立连接
public class JedisTest {
private Jedis jedis;@BeforeEach
void setUp(){
//1.建立连接
jedis = new Jedis("192.168.200.130",6379);
//2.设置密码
jedis.auth("1234");
//3.选择库
jedis.select(0);
}@Test
void testString(){
String result = jedis.set("name", "小明");
System.out.println("result= " + result);String name = jedis.get("name");
System.out.println("name= "+name);
}@AfterEach
void tearDown(){
if(jedis!=null){
jedis.close();
}
}
}
连接不上/报错 得使用设置密码
config set requirepass 12349
@Test
void testHash(){
jedis.hset("user:1","name","jack");
jedis.hset("user:1","age","21");
Map<String, String> map = jedis.hgetAll("user:1");
System.out.println(map);
}
2.SpringDataRedis
SpringData是Spring中数据操作的模块,包含对各种数据库的集成,其中对Redis的集成模块就叫做SpringDataRedis,官网地址:https://spring.io/projects/spring-data-redis
- 提供了对不同Redis客户端的整合(Lettuce和Jedis)
- 提供了RedisTemplate统一API来操作Redis
- 支持Redis的发布订阅模型
- 支持Redis哨兵和Redis集群
- 支持基于Lettuce的响应式编程(Lettuce之前实在es那里有)
- 支持基于JDK.JSON.字符串.Spring对象的数据序列化及反序列化
- 支持基于Redis的JDKCollection实现
SpringDataRedis中提供了RedisTemplate工具类,其中封装了各种对Redis的操作。并且将不同数据类型的操作API封装到了不同的类型中: