【redis】 高性能的 nosql 系列的 非关系型数据库 C语言开发 开源 键值对
nosql : not only sql
01 nosql vs 关系型数据库
01 查询速度:内存 硬盘【】
02 存储数据类型:
01 nosql 的存储形式是 key-value 形式,文档形式,图片形式等等,也可以存储基本类型以及对象或者集合等各种形式
02 关系型数据库只支持基本类型
03 拓展性:关系型数据库有类型 join 这样的多表查询机制的限制导致拓展艰难
04 维护工具和资料有限
05 不提供对 sql 的支持
06 不提供 关系型数据库 对事务的处理【】
02 一般将数据存储在 关系型数据库,在nosql数据库中备份关系型数据库的数据
03 数据类型
string list set hash sortedset
04 应用场景
01 缓存(数据查询、短连接、新闻内容、商品内容)
02 聊天室的在线好友列表
03 任务队列(秒杀、抢购、12306等)
04 应用排行榜
05 网站访问统计
06 数据过期处理(可以精确到毫秒)
07 分布式集群架构中的 session 分离
05 下载安装
01 https://redis.io
02 http://www.redis.net.cn
03 一些说明
01 redis.windows.conf 配置文件
02 redis-cli.exe redis的客户端
03 redis-server.exe redis服务器端
06 命令操作
01 string
01 set key value
02 get key
03 del key
02 hash
01 hset key field value
02 hget key field
03 hgetall key
04 hdel key field
03 list
01 lpush/rpush key value
02 lrange key start end 【lrange key 0 -1】
03 lpop/rpop key
04 set
01 sadd key value
02 srem key value 【】
03 smembers key 【】
05 sortedset (根据score排序)
01 zadd key score value
02 zrange key start end
03 zrem key value 【】
07 通用命令
01 keys *
02 type key
03 del key
08 持久化
01 RDB 默认方式,在一定时间间隔内,检测key的变化情况,满足则持久化数据
redis.window.conf
# after 900 sec (15 min) if at least 1 key changed
save 900 1
# after 300 sec (5 min) if at least 10 keys changed
save 300 10
# after 60 sec if at least 10000 keys changed
save 60 10000
【】redis-server.exe redis.windows.conf
修改完配置文件,需要重新启动服务器:
02 AOF 日志记录的方式,可以记录每一条命令的操作。可以每一次命令操作后,持久化数据
redis.window.conf
appendonly no(关闭aof) --> appendonly yes (开启aof)
# appendfsync always : 每一次操作都进行持久化
appendfsync everysec : 每隔一秒进行一次持久化
# appendfsync no : 不进行持久化
【jedis】 java操作redis数据库的工具
Jedis jedis = new Jedis("localhost",6379);
jedis.set("username","zhangsan");
jedis.close();
string list hash set sortedset 操作方法雷同
【JedisPool】
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxTotal(50);
config.setMaxIdle(10);
JedisPool jedisPool = new JedisPool(config,"localhost",6379);
Jedis jedis = jedisPool.getResource();
//operation
jedis.close();【归还连接池】
【JedisPoolUtils】
【案例】
省份下拉列表(数据查询:先从缓存中获取,获取不到再到数据库中获取)
缓存的数据最好是不进行增删改的数据
如果需要进行增删改,需要先删除redis中的数据,再更新
【ajax】 异步的javascript和xml
01 异步 同步
02 ajax 能在无需重新加载整个页面的情况下,更新局部网页
03 实现
01 原生 js 实现 (了解)
01 创建核心对象
var xmlhttp;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
02 建立连接 get/post url 同步/异步
xmlhttp.open("GET","ajaxServlet?username=tom",true);
03 发送请求
xmlhttp.send();
04 做出响应
xmlhttp.onreadystatechange=function()
{
//判断readyState就绪状态是否为4,判断status响应状态码是否为200
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
//获取服务器的响应结果
var responseText = xmlhttp.responseText;
alert(responseText);
}
}
02 jq 实现
01 $.ajax({
url : "",
type : "POST",
// data : "username=zero&age=12&gender=true",
data : {"username":"zero",age:12,"gender":true},
success:function(data){ alert(data); },
error:function(data){ alert(data); },
dataType:"text"
});
02 $.get(
"url",
{"username":"zero",age:12,"gender":true},
function(data){ alert(data); },【成功后调用的函数】
"type"
);
03 $.post(
"url",
{"username":"zero",age:12,"gender":true},
function(data){ alert(data); },【成功后调用的函数】
"type"
);
【json】 javascript 对象表示法
var p = {"name":"张三","age":23,"gender":"男"};
var arr = ["zero","abel"];
json 存储和交换文本信息
比xml 更小,更快,更易解析
01 json 数据由键值对组成
键 用单引号或双引号引起来,也可以不使用引号
值 数字 字符串 true/false 对象 数组 null
02 获取数据
p.name p["name"] arr[0]
03 遍历
for(var key in p){ alert(p[key]); }
for(var i=0;i<arr.length;i++){ alert(arr[i]); }
$.each(p,function(key,element){ alert(key + "---" + element); });
$(p).each(function(key,element){ alert(key + "---" + element); });
04 json 对象 与 java 对象 的相互转换
json 解析器: jsonlib gson fastjson jackson【介绍】
01 导入 jar 包
02 创建 Jackson 核心对象 ObjectMapper
ObjectMapper.writeValue(File/Writer/OutputStream,obj)
String jsonStr = ObjectMapper.writeValueAsString(obj)
@JsonIgnore
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
User user = objectMapper.readValue(jsonStr, User.class);
【案例】ajax + jquery ,异步检验用户名是否存在
01 mapper.writeValue(response.getWriter(),map);
02 指定响应的数据格式 【查询tomcat】
response.setContentType("application/json;charset=utf-8");
03 ajax 请求指定 type 为 json
【JQuery-02】
01 动画
01 show hide ("fast","swing",function(){ ... })
02 slideDown slideUp (5000,"linear")
03 fadeIn fadeOut ("slow")
04 toggle slideToggle fadeToggle ("slow")
02 遍历
01 for(var i=0;i<arr.length;i++){ .. }
02 jq对象.each(function(index,element){ ... });
03 $.each(objject,function(index,element){ ... });
04 for(ele of arr){ ... } 【jquery 3.0版本后提供的方式】
03 事件的绑定与解除
01 传统的方式
focus blur change click dblclick
keydowm keyup keypress
mousedown mouseenter mouseleave
submit
链式编程:jq对象.click(function(){ ... }).dblclick(function(){ ... });
02 on off
jq对象.on("事件名称1 事件名称2",function(){ ... })
jq对象.off("时间名称")
jq对象.off() 【将组件上的所有事件全部解绑】
03 事件切换
jq对象.toggle(函数1,函数2);
【注意】这个方法在高版本中被剔除了,需要引入 jquery-migrate-1.0.0.js
04 针对 jq 对象,进行方法拓展
$.fn.extend(
check:function(){this.prop("checked",true);},
uncheck:function(){this.prop("checked",false);}
);
$("input[type='checkbox']").check();
05 针对 jq 对象,进行方法拓展
$.extend(
max:function(a,b){return a>b?a:b;},
min:function(a,b){return a<b?a:b;}
);
var max = $.max(4,3);
06
【JQuery-01】write Less,Do More
01 Jquery 入口函数
$(function(){ ... });
$(document).ready(function(){ ... });
02 js对象 和 jquery对象都可以看作数组
03 js jq 转化
01 var jq = $(js);
02 var ja = jq[0];
03 var ja = jq.get(0);
04 入口函数
01 window.onload = function(){ ... }
01 只能写一次,如果写多次,将会覆盖
02 $(function(){ ... });
01 可以写多次,如果写多次,不会覆盖
03 $(document).ready(function(){ ... });
01 等价于 02
05 一些例子
$("#b1").click(function(){
$("#div1").css("backgroundColor","pink");
});
06 基本选择器
01 id #id
02 class .class
03 标签 div
04 并集 span,#id
07 属性选择器
01 div[title] 含有title属性的div
02 div[title='test'] 含有title属性的div,且其属性值为 test
03 div[title!='test'] 01 不含有title属性的div 02 含有title属性的div,但其属性值不为 test
04 div[title^='te'] 含有title属性的div,且其属性值以 te 开头
05 div[title$='est'] 含有title属性的div,且其属性值以 est 结尾
06 div[title*='es'] 含有title属性的div,且其属性值包含 es
08 层次选择器
01 body div body 内的所有 div
02 body > div body 的直接孩子中的 div
09 过滤选择器
01 div:first 第一个 div
02 div:last 最后一个 div
03 div:not(.one) class 不为 one 的所有 div
04 div:even 索引值为偶数的所有 div
05 div:odd 索引值为奇数的所有 div
06 div:gt(3) 索引值大于3的所有 div
07 div:eq(3) 索引值为3的所有 div
08 div:lt(3) 索引值小于3的所有 div
09 :header 匹配 h1 - h6 标签
10 表单属性过滤选择器
01 input[type='text']:enabled 可以编辑的
02 input[type='text']:disabled 不可编辑的
03 input[type='checkbox']:checked 被选中的
04 #job > option:selected 被选中的
11 dom 操作
01 val html text
01 $("#myinput").val() 获取值
02 $("#myinput").val("newValue") 设置值
03 $("#mydiv").html(); 获取html文本,如果有html标签,也会获取
04 $("#mydiv").html("<h1>一级标题</h1>"); 设置html标签文本
05 $("#mydiv").text(); 获取text文本,如果有html标签,不会获取
06 $("#mydiv").text("<h1>一级标题</h1>"); 设置text文本,html标签会被原样显 示
02 attr prop
01 $("#bj").attr("name");
02 $("#bj").attr("name","dabeijing");
03 $("#bj").removeAttr("name");
04 $("#hobby").prop("checked"); 【固有属性,用prop】
05 $("#bj").prop("name","dabeijing");
03 class css
01 $("#one").prop("class","second");
02 $("#one").addClass("second");
03 $("#one").removeClass("second");
04 $("#one").toggleClass("second"); 【切换样式】
05 $("#one").css("backgroundColor");
06 $("#one").css("backgroundColor","green");
04 文档操作
01 append appendTo
02 prepend prependTo
03 after insertAfter
04 before insertBefore
05 remove
06 empty
07 clone
|
|