Redis安装使用总结

1.Redis

1.NoSQL简介

1.关系型数据库的瓶颈
  1. 性能瓶颈:例如mysql等数据存在磁盘中,磁盘io的性能很低,造成mysql性能瓶颈
  2. 扩展性瓶颈:关系型数据库,数据之间关系复杂,扩展性差.
  3. 不适合存储海量的非关系型数据由于扩展性差,不便于大规模集群,使得关系型数据库无法胜任海量数据的存储

Nosql就是为了解决关系型数据库海量用户和数据下的性能差,扩展性不好,无法海量存储非关系数据库的一系列产品解决方案

关系型数据库与NoSQL数据库并非对立而是互补的关系,即通常情况下使用关系型数据库,在适合使用NoSQL的时候使用NoSQL数据库,NoSQL数据库对关系型数据库的不足进行弥补。

2.NoSQL的主流产品

键值(Key-Value)存储数据库

相关产品:Gemfire、redis

应用场景:内容缓存,主要用于处理大量数据的高访问负载。

列存储数据库相关产品:Hbase

应用场景:分布式的文件系统

文档型数据库(json)相关产品:MongoDB

应用场景:web应用的数据库(已支持事物但不支持表关系)

图形(Graph)数据库

相关产品:Neo4J

应用场景:社交网络

3.NoSQL

NoSQL:Not Only SQL (不仅仅是SQL)。NoSQL,泛指非关系型的数据库,它可以作为关系型数据库的良好补充。不仅是关系型数据库。

特点:

​ 1.易扩展

​ 2.高性能

​ 3 .高可用

​ 4.灵活的数据模型

2.Redis简介

1.Redis简介

用c语言开发的开源性的高性能键值对(key-value)数据库,读写效率非常高。redis是其中一个比较优秀的Nosql的类型的工具。意大利人开发

2.性能

官方提供测试数据,50个并发执行100000个请求,读的速度是110000次/s,写的速度是81000次/s ,且Redis通过提供多种键值数据类型来适应不同场景下的存储需求,

3.Redis支持的键值数据类型

目前为止Redis支持的键值数据类型如下:

字符串类型 string

散列类型 hash

列表类型 list

集合类型 set

有序集合类型 sortedset

4.Redis应用场景
  1. 缓存(数据查询、短连接、新闻内容、商品内容等等)。(最多使用)
  2. 分布式集群架构中的session分离。
  3. 聊天室的在线好友列表。
  4. 任务队列。(秒杀、抢购、12306等等)
  5. 应用排行榜。
  6. 网站访问统计。
  7. 数据过期处理(可以精确到毫秒)
  8. 消息队列
  9. 分布式锁

3.window版Redis的安装与使用

​ https://github.com/MSOpenTech/redis/tags window版的下载地址

​ https://redis.io/download 官网linux版的下载地址

4.Redis的数据类型(重点)

Redis是一个key=value(长度512M)形式的数据库,key都是字符串类型(不能重复)

value的数据类型以下五种

字符串(String)

哈希(hash)

字符串列表(list)

字符串集合(set)

有序字符串集合(sorted set)

5.Redis的操作命令

1.value字符串类型

1.set设置指定key 的值,set key Value

set str1 abc

2.get获取指定 key 的值。get key

get str1

3.del 该命令用于在 key 存在是删除 key。del key

del str1

4.keys 查找所有符合给定模式( pattern)的 key ,keys *代表全部。

keys *

5.incr key 将 key 中储存的数字值增一。incrby key 将 key 所储存的值加上给定的增量值(increment) 。

set id 1 incr id 这时 value =2, incrby id 4 这时(id)value=6;

6.decr key 将 key 中储存的数字值减一 .key 所储存的值减去给定的减量值(decrement) 。(同上)

7.strlen key 返回 key 所储存的字符串值的长度。

通用的操作命令

1.setex key 将值 value 关联到 key ,并将 key 的过期时间设为 seconds (以秒为单位)。

setex id 60 1 (60秒后消失,存在60秒) ttl key 显示key的剩余时间(integer类型)

2.psetex这个命令和 SETEX 命令相似,但它以毫秒为单位设置 key 的生存时间,

2.value的hash类型的数据操作

1.hset key field value 将哈希表 key 中的字段 field 的值设为 value 。

2.hmset key field value [field value…] 同时将多个 field-value (域-值)对设置到哈希表 key 中。

3.hget key field 获取存储在哈希表中指定字段的值

4.hgetall key 获取在哈希表中指定 key 的所有字段和值

5.hvals 获取哈希表中所有值

6.hkeys 获取所有哈希表中的字段

7.hexists key 查看哈希表 key 中,指定的字段是否存在。

8.hincrby key field 为哈希表 key 中的指定字段的整数值加上增量 increment

9.hlen 获取哈希表中字段的数量

10.hdel 删除一个或多个哈希表字段

3.value的 列表 类型的数据操作

1.lpush key value 将一个或多个值插入到列表头部

2.rpush 在列表中添加一个或多个值(是从尾部加入,)

3.lset 通过索引设置列表元素的值

4.lpop 移出并获取列表的第一个元素

5.rpop 移除并获取列表最后一个元素

6.lrange 获取列表指定范围内的元素

7.ltrim 对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除。

8.lrem 移除列表元素

9.lindex 通过索引获取列表中的元素

10.lrange key 0 4 (1-5前五个) 获取列表指定范围内的元素

11.llen 获取列表长度

4.value的set类型的数据操作(无序,不重复)

1.sadd key member 向集合添加一个或多个成员

2.srem 移除集合中一个或多个成员

3.spop 移除并返回集合中的一个随机元素

4.srandmembers 返回集合中一个或多个随机数

5.smembers 返回集合中的所有成员

6.sismember 判断 member 元素是否是集合 key 的成员

5.value的SortedSet类型的有序集合数据操作

1.zadd 向有序集合添加一个或多个成员,或者更新已存在成员的分数

2.zscore 返回有序集中,成员的分数值

3.zrevrank 返回有序集合中指定成员的排名,有序集成员按分数值递减(从大到小)排序

4.zcard 获取有序集合的成员数

5.zrem 移除有序集合中的一个或多个成员

6.zrevrange 返回有序集中指定区间内的成员,通过索引,分数从高到底

6.通用命令

1.exists 检查给定 key 是否存在。

2.keys 查找所有符合给定模式( pattern)的 key 。

3.type 返回 key 所储存的值的类型。

4.rename 修改 key 的名称

5.persist 移除 key 的过期时间,key 将持久保持。

6.move 将当前数据库的 key 移动到给定的数据库 db 当中。

7.dump 序列化给定 key ,并返回被序列化的值。

8.expire seconds为给定 key 设置过期时间。

9.ttl 以秒为单位,返回给定 key 的剩余生存时间(TTL, time to live)。

10.pttl 以毫秒为单位返回 key 的剩余的过期时间。

11.del 该命令用于在 key 存在是删除 key。

12 .select 切换到指定的数据库

13.dsize 数据库中的数据量

  1. ping 查看服务是否运行
  2. quit 关闭当前连接

6.Redis的持久化机制

1.RDB持久化机制

默认是开启的。redis.windows.conf配置文件中进行配置 一般是193-196行 默认配置

缺点:可能会丢失数据(异常停止时)

2.AOF持久化机制

每一次操作都记录一个日志。如果出现问题,按照日志进行重做(能回复数据)。

默认不是开启的。一般是文件的581行(yes/no)

特点:随着时间的推移,记录日志的文件会越来越大。

7.使用Jedis开发包操作Redis中的数据

step1、导入jedis的开发包

step2、利用Jedis对redis数据进行增删改查

Jedis的方法名和操作数据的那些命令一致的

step3、jedis也像数据库一样,提供了连接池。

step4、编写一个Jedis连接池的工具类,编写一个配置文件

8.首页查询线路分类信息

step1、修改页面

var url = “${pageContext.request.contextPath}/***Servlet”;
​ var data = “action=findAllCategories”;

$("#categoryUI").append("

  • "+this.cname+"
  • ");

    step2、建立****Servlet

    List categories = categoryService.findAllCategories();
    ​ String json = new ObjectMapper().writeValueAsString(categories);
    ​ //设置响应消息头和编码
    ​ response.setContentType(“application/json;charset=UTF-8”);

    step3、创建***Service

    step4、实现***Service

    step5、配置beans.xml

    step6、编写***Dao

    step7、编写***Dao.xml映射文件

    改造传统从数据库查询:改到redis中

    数据一般不怎么变化。每次都从数据库查询,性能比较低。

    常量接口设计模式:解耦合,分别开发。

    解决办法就是从redis中查询,如果查到了,直接返回。没有查到,从数据库查询,放到redis中。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值