- 什么是redis:Nosql一种缓存数据库
- redis可以干什么:redis可以减轻对数据库的请求压力
如果不使用缓存:客服端->控制层->业务层->dao层
使用缓存:客服端->控制层->业务层->redis缓存 1:如果缓存中有数据,则直接返回缓存数据,则不需要dao层jidbc连接数据库 2:如果没有则在进行数据库的连接,查询数据,将查询出来的数据在放到缓存之中。这样可以减轻数据库访问的压力(访问缓存的速度 优于访问数据库的速度)
- redis使用场景:
1:token的生成(注册登录的时候,将生成的token放到redis之中)客服端每次请求的时候 只需要将前端传过来的token和后端保存到redis的token相比较,相同则放行,不需要在将token保存到数据库之中
2:session共享
3:分布式锁
4:自增id
5:验证码(redis可以设置过期的时间)
redis内置的数据类型有 5种:字符串String、哈希Hash、列表List、集合Set、有序集合ZSet
- string 类型是 Redis 最基本的数据类型,string 类型的值最大能存储 512MB,string 类型是二进制安全的。意思是 redis 的 string 可以包含任何数据。比如jpg图片或者序列化的对象。存值:set key value ;取值:get key
示例: -
Redis hash 是一个string类型的field和value的映射表,hash特别适合用于存储对象。Redis 中每个 hash 可以存储 232 - 1 键值对(40多亿)。hash存值的方式比String 稍微要复杂一点存值:hmset key field value [field value ...] ;取值:hget key field
示例:
存值:hmset myhash key1 value1 key2 value2
取值:hget myhash key2
获取key的所有值(key-value) :hgetall myhash -
Redis 操作list(可重复)列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)一个列表最多可以包含 232 - 1 个元素 (4294967295, 每个列表超过40亿个元素)。
示例:
存值:取值:
取值 LRANGE key 开始索引 最后索引
-
redis操作 set(不可重复)Redis 的 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。Redis 中集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。集合中最大的成员数为 232 - 1个集合可存储40多亿个成员)。存值:sadd key value 取值所有:smembers key
示例:
存值:取值:
- redis 操作sort set 有序集合 Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。有序集合的成员是唯一的,但分数(score)却可以重复。集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。 集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)。
存值:
取值:
添加的时候 可以给每个值设置一个分数 取值的时候 可以根据索引 取一个范围值的值
- 简单的记录一下redis的场景,概念 和操作5种数据类型(参考资料:http://www.runoob.com/redis/redis-sorted-sets.html)