简介
redis (Remote Dictionary Server 远程字典服务)开源使用C语言编写、支持网络、可基于内存亦可持久化日志型、Key-Value数据库;
特点
1、key-value型存储系统,5种数据类型;
2、高性能数据库
3、支持主从同步
5种数据类型
- String字符串类型
五个命令:get 、 set 、 del 、 incr、 decr 等
127.0.0.1:6379> set hello world
OK
127.0.0.1:6379> get hello
"world"
127.0.0.1:6379> del hello
(integer) 1
127.0.0.1:6379> get counter
"2"
127.0.0.1:6379> incr counter
(integer) 3
127.0.0.1:6379> incrby counter 100
(integer) 103
127.0.0.1:6379> get counter
"103"
127.0.0.1:6379> decr counter
(integer) 102
127.0.0.1:6379> get counter
"102"
- Hash(哈希)
命令 hget 、hset、hdel
127.0.0.1:6379> hset user name1 hao
(integer) 1
127.0.0.1:6379> hgetall user
1) "name1"
2) "hao"
127.0.0.1:6379> hget user name1
"hao"
127.0.0.1:6379> hset user name2 xiaohao
(integer) 1
127.0.0.1:6379> hgetall user
1) "name1"
2) "hao"
3) "name2"
4) "xiaohao"
可用于缓存,相比String更节省空间
- 链表
List(redis使用双端链表实现List)有序,Value可重复
127.0.0.1:6379> lpush mylist 1 2 ll ls mem
(integer) 5
127.0.0.1:6379> lrange mylist 0 -1
1) "mem"
2) "ls"
3) "ll"
4) "2"
5) "1"
127.0.0.1:6379>
- Set集合
集合类型保存多个字符串,无序,不允许重复元素,不可通过下标获取元素,可取多个集合交并差集
127.0.0.1:6379> sadd myset hao hao1 xiaohao hao
(integer) 3
127.0.0.1:6379> SMEMBERS myset
1) "xiaohao"
2) "hao1"
3) "hao"
127.0.0.1:6379> SISMEMBER myset hao
(integer) 1
可用于标签、点赞收藏等功能;
- Zset有序集合
有序、元素不可重复
127.0.0.1:6379> zadd myscoreset 100 hao 90 xiaohao
(integer) 2
127.0.0.1:6379> ZRANGE myscoreset 0 -1
1) "xiaohao"
2) "hao"
127.0.0.1:6379> ZSCORE myscoreset hao
"100"
可用于排行榜:排名不可重复,但关注度、字数等可重复;
使用
启动虚机、进入redis根目录、启动redis
代码:
pom文件导入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
yml文件配置redis
redis:
host: 192.168.80.130
port: 6379
database: 0 # redis 数据库索引(默认为0)
jedis:
pool:
max-active: 50 # 连接池最大连接数(使用负值标识没有限制)
max-idle: 20 # 连接池中最大空闲连接
min-idle: 2 # 连接池中的最小空闲连接
测试类中注入
@Resource
private RedisTemplate redisTemplate;
@Test
public void set() {
redisUtils.set("redis_key", "redis_value");
}
@Test
public void get() {
String value = redisUtils.get("123");
System.out.println(value);
}
@Test
public void test() {
TemporaryClassStudentModel temporaryClassStudentModel = null;
// 根据key值查询返回
temporaryClassStudentModel = (TemporaryClassStudentModel) redisTemplate.opsForValue().get("123");
System.out.println(temporaryClassStudentModel);
}
temporaryClassStudentModel = new TemporaryClassStudentModel();
// 上课班ID
String teachClassId = "123";
temporaryClassStudentModel.setName("123");
temporaryClassStudentModel.setId("123");
temporaryClassStudentModel.setKeyText(keyText);
temporaryClassStudentModel.setTeachClassId("123");
temporaryClassStudentModel.setCour。。。seId("123");
temporaryClassStudentModel.setCourseName("123");
redisTemplate.opsForValue().set(keyText,temporaryClassStudentModel);
redisTemplate.expire(keyText,2400, TimeUnit.SECONDS);
后续补充完善。。。