目录
具体请到redis官网查看:https://www.redis.net.cn/tutorial/3510.html
Redis是一个基于内存的key-value结构数据库
数据类型
字符串(String):普通字符串,Redis中最简单的数据类型
哈希(Hash):也叫散列,类似于java中的HashMap
列表(List):按照插入顺序排序,可以有重复元素,类似于java中的LinkedList
集合(Set):无序集合,没有重复元素,类似于java中的HashSet
有序集合(sorted set/zset):集合中每个元素关联一个分数,根据分数升序排序,没有重复元素
操作命令(命令行中)
字符串(String)
set key value 设置指定key的值 (set name jack)
get key 获取指定key的值 (get name)
setex key seconds value 设置指定key的值,并将key的过期时间设为seconds秒 (setex sex 30 男)
setnx key value 只有在key不存在时设置key的值 (setnx age 18)
哈希(Hash)
hset key field value 将哈希表key中的字段field的值设置为value (hset set1 name 雷伊)
hget key field 获取存储在哈希表中指定字段的值 (hget set1 name)
hdel key field 删除存储在哈希表中的指定字段 (hdel set1 name)
hkeys key 获取哈希表中所有字段 (hkeys set1)
hvals key 获取哈希表中所有值 (hvals set1)
列表(List)
lpush key value1 [value2] 将一个或多个值插入到列表头部 (lpush list1 a b c)
lrange key start stop 获取列表指定范围内的 (lrange list1 0 -1)
rpop key 移除并获取列表最后一个元素 (rpop list1)
llen key 获取列表长度 (llen list1)
集合(Set)
sadd key member1 [member2] 向集合中添加一个或多个成员 (sadd set2 a b x y)
smembers key 返回集合中的所有成员 (smembers set2)
scard key 获取集合的成员数 (scard set2)
sinter key1 [key2] 返回给定集合的交集 (sinter set2 set3)
sunion key1 [key2] 返回给定集合的并集 (sunion set2 set3)
srem key member1 [member2] 删除集合中一个或多个成员 (srem set2 a x)
有序集合(sorted set/zset)
zadd key score1 member1 [score2 member2] 向有序集合添加一个或多个成员
(zadd zset1 10 a 10.5 b)
zrange key start stop 通过索引区间返回有序集合中指定区间内的成员
(zrange zset1 0 -1)
zincrby key increment member 有序集合中对指定成员的分数加上增量 increment
(zincrby zset1 10 a)
zrem key member1 [member2] 移除有序集合中的一个或多个成员
(zrem zset1 a)
通用命令
keys pattern 查找所有符合给定模式pattern的key (keys *) (keys set*)
exists key 检查给定key是否存在 (exists zset1)
type key 返回key所储存的值的类型 (type zset1)
del key key存在时删除key (del zset1)
在Java中操作Redis
Spring Data Redis 使用方式:
1.导入Spring Data Redis的maven坐标
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
2.配置Redis数据源
spring:
data:
redis:
host: localhost
port: 6379
password: 252748377
3.编写配置类,创建RedisTemplate对象
package com.rumen.common;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.StringRedisSerializer;
@Configuration
public class RedisConfiguration {
@Bean
public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory){
RedisTemplate redisTemplate = new RedisTemplate();
//设置redis的连接工厂对象
redisTemplate.setConnectionFactory(redisConnectionFactory);
//设置redis key的序列化器
redisTemplate.setKeySerializer(new StringRedisSerializer());
return redisTemplate;
}
}
4.通过RedisTemplate对象操作Redis
操作命令(Java中)
字符串(String)
public void testString(){
//set get setex setnx
ValueOperations valueOperations = redisTemplate.opsForValue();
valueOperations.set("city","上海");//set
String city = (String) valueOperations.get("city");//get
System.out.println(city);
valueOperations.set("name","小明",3, TimeUnit.MINUTES);//setex
valueOperations.setIfAbsent("age","2");//setnx
}
哈希(Hash)
public void testHash(){
//hset hget hdel hkeys hvals
HashOperations hashOperations = redisTemplate.opsForHash();
hashOperations.put("hash1","name","tom");//hset
hashOperations.put("hash1","age","18");//hset
String name = (String) hashOperations.get("hash1", "name");//hget
System.out.println(name);
Set keys = hashOperations.keys("hash1");//hkeys
System.out.println(keys);
List values = hashOperations.values("hash1");//hvals
System.out.println(values);
hashOperations.delete("hash1","name");//hdel
}
列表(List)
public void testList(){
//lpush lrange lpop llen
ListOperations listOperations = redisTemplate.opsForList();
listOperations.leftPushAll("list","a","b","c");//lpush
listOperations.leftPush("list","x");//lpush
List list = listOperations.range("list", 0, -1);//lrange
System.out.println(list);
Object rightPop = listOperations.rightPop("list");//lpop
System.out.println(rightPop);
Long size = listOperations.size("list");//llen
System.out.println(size);
}
集合(Set)
public void testSet(){
//sadd smember scard sinter sunion srem
SetOperations setOperations = redisTemplate.opsForSet();
setOperations.add("set1","a","b","c","d");//sadd
setOperations.add("set2","a","b","x","y");//sadd
Set members = setOperations.members("set1");//smember
System.out.println(members);
Long size = setOperations.size("set1");//scard
System.out.println(size);
Set intersect = setOperations.intersect("set1", "set2");//sinter
System.out.println(intersect);
Set union = setOperations.union("set1", "set2");//sunion
System.out.println(union);
setOperations.remove("set1","a","b");//srem
}
有序集合(sorted set/zset)
public void testZSet(){
//zadd zrange zincrby zrem
ZSetOperations zSetOperations = redisTemplate.opsForZSet();
zSetOperations.add("zset1","a",10);//zadd
zSetOperations.add("zset1","b",9.5);//zadd
zSetOperations.add("zset1","c",10.5);//zadd
Set zset1 = zSetOperations.range("zset1", 0, -1);//zrange
System.out.println(zset1);
zSetOperations.incrementScore("zset1","c",10);//zincrby
zSetOperations.remove("zset1","a");//zrem
}
通用命令
public void testCommon(){
//keys exists type del
Set keys = redisTemplate.keys("*");//keys
System.out.println(keys);
Boolean name = redisTemplate.hasKey("name");//exists
System.out.println(name);
Boolean set1 = redisTemplate.hasKey("set1");//exists
System.out.println(set1);
for (Object key : keys) {
DataType type = redisTemplate.type(key);//type
System.out.println(type.name());
}
redisTemplate.delete("zset1");//del
}