为什么使用redis
(一)性能
我们在碰到需要执行耗时特别久,且结果不频繁变动的SQL,就特别适合将运行结果放入缓存。这样,后面的请求就去缓存中读取,使得请求能够迅速响应。
(二)并发
在大并发的情况下,所有的请求直接访问数据库,数据库会出现连接异常。这个时候,就需要使用redis做一个缓冲操作,让请求先访问到redis,而不是直接访问数据库
使用redis的好处
- Redis是基于内存存储数据,亦可持久化到本地。
- Redis在接收请求的命令时,是单线程处理,内部的操作时多线程的。
- Redis的读写速度很快,读的速度是110000次/s,写的速度是81000次/s 。
- Redis对外提供了多种语言的API,操作简单。
- Redis提供了多样化存储结构。
redis的存储结构
- key-string,key-hash,key-list,key-set,key-zset
redis在LINUX中常用的一些命令
- string:
- set、setnx、setex、mset
- get
- incr、decr、incrby
- hash:
- hset key field value
- hget key field
- hkeys key
- hgetall key
- list
- lpush/rpush key value […]
- lpop/rpop key
- lrange key start stop
- set
- sadd key member
- sismember key member
- sinter set1 set2
- sunion set1 set2
- sdiff set1 set2
- zset
- zadd key score member
- zrange key start stop
- zrangebyscore key min max
- key
- del key
- expire key second
- expireat key timestamp
- ttl key
- persist key
- keys pattern
- db
- flushdb
- flushall
- monitor
- lastsave
- dbsize
java代码中操作redis
5、Java代码中操作Redis:
- 使用Jedis操作Redis:
- 创建项目。
- 导入依赖。
- 入门测试:
- 创建Jedis对象,并通过有参构造注入host,port。
- 使用Jedis对象操作Redis,命令是什么,方法就是什么。
- 释放资源。
- 对象存储:
- 基于byte[]储存对象数据:
- 使用Spring提供的序列化工具对象。
- 基于JSON字符串存储对象数据:
- 使用Jackson,Gson,fastJSON三者选一。
- 连接池:
- 创建JedisPool对象。
- 管道操作:
- 将一系列操作在客户端封装好,一次性的发给Redis服务,并且Redis服务也批量直接返回响应,为了避免网络延迟,网络抖动带来的性能的消耗。pipeline
Redis的事务
Redis的事务不同于传统的关系型数据库的事务。
- 一次Redis的事务操作,该成功的成功,该失败的失败。
- Redis的事务会和watch监听机制配合使用:先执行watch指定监听的key,如果在一次事务操作中,监听的key被修改了,当前事务自动取消。
- 使用命令:
- multi:开启事务
- exec:执行事务
- discard:取消事务
- watch key [key…]:监听指定的key
- unwatch:取消全部监听的key