1.概述
Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。 它支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 与范围查询, bitmaps, hyperloglogs 和 地理空间(geospatial) 索引半径查询。 Redis 内置了 复制(replication),LUA脚本(Lua scripting), LRU驱动事件(LRU eviction),事务(transactions) 和不同级别的 磁盘持久化(persistence), 并通过 Redis哨兵(Sentinel)和自动 分区(Cluster)提供高可用性(high availability)。
1.1 String类型
set 添加key-value
get 根据key获取数据
strlen 根据key获取值的长度
del 删除redis中的key
keys 用于查询符合条件的key
mset 获取多个key-value
mget 获取多个key的值
append 对某个key的值进行追加
type 检查某个key的类型
select 切换rdis数据库
flushdb 清空单个数据库
flushall 清空全部数据库
incr 自动加一
decr 自动减一
incrby 指定数值加一
decrby 指定数值减一
expire 指定key的生效时间 单位/秒
pexpire 指定key的失效时间 单位/毫秒
ttl 检查key的剩余存活时间
1.1.2 Hash类型
说明:可以用散列类型保存对象和属性值
hset 为对象添加数据
hget 获取对象的属性值
hexists 判断对象的属性是否存在
hdel 删除hash中的属性
hgetall 获取hash全部元素和值
hkeys 获取hash中的所有字段
hlen 获取hash中所有属性的数量
hmget 获取hash里面指定字段的值
hmset 为hash的多个字段设定值
hsetnx 设置hash的一个字段,只有当这个字段不存在时有效
hstrlen 获取hash中指定key的长度
hvals 获取hash的所有值
1.1.3 List类型
说明:Redis中的List集合是双端循环列表,分别可以从左右两个方向插入数据.
List集合可以当做队列使用,也可以当做栈使用
队列:存入数据的方向和获取数据的方向相反
栈:存入数据的方向和获取数据的方向相同
lpush 从队列的左边入队一个或多个元素
rpush 从队列的右边入队一个或多个元素
lpop 从队列的左端出对的一个元素
rpop 从队列的右端出队的一个元素
lpushx 当队列存在时从队列的左侧入队一个元素
rpushx 当队列存在时队列的右侧入队的一个元素
lrange 从列表中获取指定返回的元素
lrem 从存于 key 的列表里移除前 count 次出现的值为 value 的元素。 这个 count 参数通过下面几种方式影响这个操作:
count > 0: 从头往尾移除值为 value 的元素。
count < 0: 从尾往头移除值为 value 的元素。
count = 0: 移除所有值为 value 的元素。
Lset 设置 index 位置的list元素的值为 value
1.1.4 Redis事务命令
说明:redis中操作可以添加事务的支持.一项任务可以由多个redis命令完成,如果有一个命令失败导致入库失败时.需要实现事务回滚.
multi 标记一个事务开始
exec 执行所有multi之后发的命令
discard 丢弃所有multi之后发的命令
2.Redis高级应用
2.1.1 添加jar包文件
说明:在JT-PARENT项目中添加jar包文件
<!-- jedis -->
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>${jedis.version}</version>
</dependency>
<!--添加spring-datajar包 -->
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-redis</artifactId>
<version>1.4.1.RELEASE</version>
</dependency>
2.1.2 入门案例-String
/**
* 连接单台redis
* 参数介绍:
* redisIP地址.
* redis:6379
*/
@Test
public void test01(){
Jedis jedis = new Jedis("192.168.126.166",6379);
jedis.set("redis", "redis入门案例");
System.out.println
("获取redis中的数据:"+jedis.get("redis"));
//为数据设定超时时间 单位秒
jedis.setex("1804", 100, "1804班");
}
2.1.3 入门案例hash
@Test
public void test01(){
Jedis jedis = new Jedis("192.168.126.148", 6379);
jedis.hset("user", "id", "1");
jedis.hset("user", "name", "tomcat");
jedis.hset("user", "age", "18");
System.out.println("操作完成!!!"+jedis.hget("user", "id"));
Map<String,String> map = jedis.hgetAll("user");
System.out.println(map);
}
结果展现:
操作完成!!!1
{name=tomcat, age=18, id=1}
2.1.4 入门案例-List
@Test
public void test02(){
Jedis jedis = new Jedis("192.168.126.148", 6379);
Long number = jedis.lpush("list", "a","b","c","d","e");
System.out.println("获取数据"+number);
List<String> list= jedis.lrange("list", 0, -1);
System.out.println("获取参数:"+list);
}
结果展现
获取数据5
获取参数:[e, d, c, b, a]