1.Redis缓存服务器

1.1 业务说明

redisson刷新缓存过期时间 redis缓存刷新命令_redis

1.2 关于缓存机制说明

说明: 缓存中的数据都是数据库中的记录. 引入缓存机制之后,主要的目的为了降低用户访问物理设备的频次.提高服务器响应效率.
维度说明:
1).开发语言: C语言开发
2).数据结构问题: K-V结构 map/properties key不能重复
3).内存数据 断电及擦除: 定期将内存数据持久化操作
4).内存资源有效: 如何有效的维护内存大小? 定期清理内存. LRU算法/LFU算法/TLL算法

1.3 Redis介绍

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)。

速度: 读: 11.2万次/秒 写: 8.6万次/秒 平均10万次/秒

1.4 Redis安装

1.4.1 上传Redis安装包

!) 关闭mycat

redisson刷新缓存过期时间 redis缓存刷新命令_Redis_02

2).修改yml

redisson刷新缓存过期时间 redis缓存刷新命令_数据_03

3).上传压缩包

redisson刷新缓存过期时间 redis缓存刷新命令_java_04

1.4.2 解压文件

1).解压命令

[root@localhost src]# tar -xvf redis-5.0.4.tar.gz

2).删除安装包、修改文件名为:redis

redisson刷新缓存过期时间 redis缓存刷新命令_redisson刷新缓存过期时间_05

1.4.2 安装redis

步骤: 进入redis根目录中

redisson刷新缓存过期时间 redis缓存刷新命令_Redis_06

命令1: make

redisson刷新缓存过期时间 redis缓存刷新命令_redisson刷新缓存过期时间_07

命令2: make install

redisson刷新缓存过期时间 redis缓存刷新命令_数据_08

1.4.3修改redis配置文件

命令: vim redis.conf shift+: 输入set nu 展现行号:

redisson刷新缓存过期时间 redis缓存刷新命令_redis_09

redisson刷新缓存过期时间 redis缓存刷新命令_java_10

1).关闭IP绑定

redisson刷新缓存过期时间 redis缓存刷新命令_java_11

2).关闭保护模式

redisson刷新缓存过期时间 redis缓存刷新命令_Redis_12

3).开启后台运行

redisson刷新缓存过期时间 redis缓存刷新命令_数据_13


4).最后wq保存退出

 

1.4.4 Redis启动命令

1).启动redis命令

redis-server redis.conf

redisson刷新缓存过期时间 redis缓存刷新命令_redisson刷新缓存过期时间_14


端口号为:6379

redisson刷新缓存过期时间 redis缓存刷新命令_Redis_15

2).进入redis客户端

redis-cli -p 6379

redisson刷新缓存过期时间 redis缓存刷新命令_java_16

3).关闭redis

方式一:

redis-cli -p 6379 shutdown

redisson刷新缓存过期时间 redis缓存刷新命令_数据_17


方式二:

ps -ef | grep redis
kill -9 8307

redisson刷新缓存过期时间 redis缓存刷新命令_数据_18


2.Redis命令

2.1 String类型

命令

说明

案例

set

添加key-value

set username admin

get

根据key获取数据

get username

strlen

根据key获取值的长度

strlen key

exists

判断key是否存在

exists name

返回1存在  0不存在

del

删除redis中的key

del key

Keys

用于查询符合条件的key

keys * 查询redis中全部的key

keys n?me 使用占位符获取数据

keys nam* 获取nam开头的数据   

mset

赋值多个key-value

mset key1 value1 key2 value2 key3 value3

mget

获取多个key的值

mget key1 key2

append

对某个key的值进行追加

append key value

type

检查某个key的类型

type key

select

切换redis数据库

select 0-15 redis中共有16个数据库

flushdb

清空单个数据库

flushdb

flushall

清空全部数据库

flushall

incr

自动加1

incr key

decr

自动减1 

decr key

incrby

指定数值添加

incrby 10

decrby

指定数值减

decrby 10

expire

指定key的生效时间 单位秒

expire key 20

key20秒后失效

pexpire

指定key的失效时间 单位毫秒

pexpire key 2000

key 2000毫秒后失效

ttl

检查key的剩余存活时间

ttl key  -2数据不存在  -1该数据永不超时

persist

撤销key的失效时间

persist key

2.2 Hash类型

说明:可以用散列类型保存对象和属性值

例子:User对象{id:2,name:小明,age:19}

命令

说明

案例

hset

为对象添加数据

hset key field value

hget

获取对象的属性值

hget key field

hexists

判断对象的属性是否存在

HEXISTS key field

1表示存在  0表示不存在

hdel

删除hash中的属性

hdel user field [field ...]

hgetall

获取hash全部元素和值

HGETALL key

hkyes

获取hash中的所有字段

       HKEYS key

hlen

获取hash中所有属性的数量

hlen key

hmget

获取hash里面指定字段的值

hmget key field [field ...]

hmset

为hash的多个字段设定值

hmset key field value [field value ...]

hsetnx

设置hash的一个字段,只有当这个字段不存在时有效

HSETNX key field value

hstrlen

获取hash中指定key的值的长度

HSTRLEN key field

hvals

获取hash的所有值

HVALS user

 

2.3 List类型

说明:Redis中的List集合是双端循环列表,分别可以从左右两个方向插入数据.

List集合可以当做队列使用,也可以当做栈使用

队列:存入数据的方向和获取数据的方向相反

栈:存入数据的方向和获取数据的方向相同

命令

说明

案例

lpush

从队列的左边入队一个或多个元素

LPUSH key value [value ...]

rpush

从队列的右边入队一个或多个元素

RPUSH key value [value ...]

lpop

  从队列的左端出队一个元素

LPOP key

rpop

从队列的右端出队一个元素

RPOP key

lpushx

当队列存在时从队列的左侧入队一个元素

LPUSHX key value

rpushx

当队列存在时从队列的右侧入队一个元素

RPUSHx key value

lrange

从列表中获取指定返回的元素

  LRANGE key start stop

  Lrange key 0 -1 获取全部队列的数据

lrem

从存于 key 的列表里移除前 count 次出现的值为 value 的元素。 这个 count 参数通过下面几种方式影响这个操作:

  • count > 0: 从头往尾移除值为 value 的元素。
  • count < 0: 从尾往头移除值为 value 的元素。
  • count = 0: 移除所有值为 value 的元素。

 list -2 “hello” 会从存于 list 的列表里移除最后两个出现的 “hello”。

需要注意的是,如果list里没有存在key就会被当作空list处理,所以当 key 不存在的时候,这个命令会返回 0。

Lset

设置 index 位置的list元素的值为 value

LSET key index value

 

2.4 Redis事务命令

说明:redis中操作可以添加事务的支持.一项任务可以由多个redis命令完成,如果有一个命令失败导致入库失败时.需要实现事务回滚。

命令

说明

案例

multi

标记一个事务开始

127.0.0.1:6379> MULTI

OK

exec

执行所有multi之后发的命令

127.0.0.1:6379> EXEC

 OK

discard

    丢弃所有multi之后发的命令

 


3. Redis高级应用

3.1 Redis入门案例

3.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>

 

3.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班");
	}

 

3.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}

3.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]