写在前面:分享技术,共同进步,有不足请见谅,相关意见可评论告知 ~

编程路漫漫,学习无止尽!

文章目录

  • JSON
    • 语法:
    • 获取数据:
    • JSON数据和Java对象的互转
      • JSON转为Java对象
      • Java对象转换JSON
        • 转换方法:
        • 注解:
  • Redis
    • redis的应用场景
    • NOSQL拓展
    • 配置介绍
    • 数据结构
    • 命令操作
      • 一、字符串类型 string
      • 二、哈希类型 hash
      • 三、 列表类型 list
      • 四、 集合类型 set
      • 五、有序集合类型 sortedset
    • 通用命令
    • 持久化
      • 一、 RDB:
      • 二、AOF:

JSON

概念: JavaScript Object Notation JavaScript对象表示法
Java体现

Person p = new Person();
p.setName("高海千歌");
p.setAge(18);
p.setGender("女");

JavaScript -> JSON 体现
(1)普通格式

var p = {"name":"高海千歌","age":18,"gender":"女"};

(2) 嵌套格式 [ ] -> { }

var ps = [{"name": "张三", "age": 23, "gender": true},{"name": "李四", "age": 24, "gender": true},{"name": "王五", "age": 25, "gender": false}];

(3) 嵌套格式 { } -> [ ]

var pss = {"persons" : [{"name": "张三", "age": 23, "gender": true},{"name": "李四", "age": 24, "gender": true},{"name": "王五", "age": 25, "gender": false}
]
}

优点
json现在多用于存储和交换文本信息的语法
行数据的传输
JSON 比 XML 更小、更快,更易解析。

语法:

基本规则
数据在名称/值对中:json数据是由键值对构成的
键用引号(单双都行)引起来,也可以不使用引号

值得取值类型:

         1. 数字(整数或浮点数)2. 字符串(在双引号中)3. 逻辑值(true 或 false)4. 数组(在方括号中)  {"persons":[{},{}]}5. 对象(在花括号中) {"address":{"province":"陕西"....}}6. null

格式
数据由逗号分隔:多个键值对由逗号分隔,花括号保存对象:使用{}定义json 格式
方括号保存数组:[]

获取数据:

  1. json对象.键名
  2. json对象[“键名”]
  3. 数组对象[索引]
  4. 遍历

分别遍历
嵌套格式 [ ] -> { }
嵌套格式 { } -> [ ]

// 遍历对象
var person = {"name": "张三", age: 23, 'gender': true};var ps = [{"name": "张三", "age": 23, "gender": true},{"name": "李四", "age": 24, "gender": true},{"name": "王五", "age": 25, "gender": false}];//获取person对象中所有的键和值//for in 循环for(var key in person){//这样的方式获取不行。因为相当于  person."name"//alert(key + ":" + person.key);//正解   alert(key+":"+person[key]);}//获取ps中的所有值for (var i = 0; i < ps.length; i++) {var p = ps[i];for(var key in p){alert(key+":"+p[key]);}}

JSON数据和Java对象的互转

JSON解析器:常见的解析器:Jsonlib,Gson,fastjson,jackson

JSON转为Java对象

  1. 导入jackson的相关jar包
  2. 创建Jackson核心对象 ObjectMapper
  3. 调用ObjectMapper的相关方法进行转换
 readValue(json字符串数据,Class)

初始化JSON字符串

  String json = "{\"gender\":\"男\",\"name\":\"张三\",\"age\":23}";

创建ObjectMapper对象

ObjectMapper mapper = new ObjectMapper();

转换为Java对象 Person对象

  Person person = mapper.readValue(json, Person.class);System.out.println(person);

Java对象转换JSON

使用步骤:

  1. 导入jackson的相关jar包
  2. 创建Jackson核心对象 ObjectMapper
ObjectMapper mapper = new ObjectMapper();
  1. 调用ObjectMapper的相关方法进行转换

转换方法:

writeValue(参数1,obj):

参数1:
File:将obj对象转换为JSON字符串,并保存到指定的文件中
Writer:将obj对象转换为JSON字符串,并将json数据填充到字符输出流中
OutputStream:将obj对象转换为JSON字符串,并将json数据填充到字节输出流中

writeValueAsString(obj):将对象转为json字符串

String json = mapper.writeValueAsString(p);
System.out.println(json);//{"name":"张三","age":23,"gender":"男"}

writeValue,将数据写到d://a.txt文件中

mapper.writeValue(new File("d://a.txt"),p);

writeValue.将数据关联到Writer中

mapper.writeValue(new FileWriter("d://b.txt"),p);

注解:

  1. @JsonIgnore:排除属性。
    在原始类定义时标注,eg: Person.java

  2. @JsonFormat:属性值得格式化
    在原始类定义时标注 eg: @JsonFormat(pattern = "yyyy-MM-dd")

  3. 复杂java对象转换

  4. List:数组

  5. Map:对象格式一致

Redis

概念: redis是一款高性能的NOSQL系列的非关系型数据库
Redis是用C语言开发的一个开源的高性能键值对(key-value)数据库

菜鸟教程

https://www.runoob.com/redis/redis-tutorial.html

redis的应用场景

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

NOSQL拓展

 •   键值(Key-Value)存储数据库相关产品: Tokyo Cabinet/Tyrant、Redis、Voldemort、Berkeley DB典型应用: 内容缓存,主要用于处理大量数据的高访问负载。 数据模型: 一系列键值对优势: 快速查询劣势: 存储的数据缺少结构化•  列存储数据库相关产品:Cassandra, HBase, Riak典型应用:分布式的文件系统数据模型:以列簇式存储,将同一列数据存在一起优势:查找速度快,可扩展性强,更容易进行分布式扩展劣势:功能相对局限• 文档型数据库相关产品:CouchDB、MongoDB典型应用:Web应用(与Key-Value类似,Value是结构化的)数据模型: 一系列键值对优势:数据结构要求不严格劣势: 查询性能不高,而且缺乏统一的查询语法• 图形(Graph)数据库相关数据库:Neo4J、InfoGrid、Infinite Graph典型应用:社交网络数据模型:图结构优势:利用图结构相关算法。劣势:需要对整个图做计算才能得出结果,不容易做分布式的集群方案。

配置介绍

数据结构

键值数据类型如下:
1) 字符串类型 string
2) 哈希类型 hash
3) 列表类型 list
4) 集合类型 set
5) 有序集合类型 sortedset

修正:关于有序无序问题

命令操作

前序
(1)点击redis-server.exe
(2)点击redis-cli.exe

注意——解决无法连接的情况
cmd redis 所在文件夹,输入redis-server.exe redis.windows.conf

一、字符串类型 string

  1. 存储: set key value
 set username zhangsanOK
  1. 获取: get key
 get username
"zhangsan"
  1. 删除: del key
 del age
(integer) 1

二、哈希类型 hash

  1. 存储: hset key field value
hset myhash username lisi
(integer) 1
hset myhash password 123
(integer) 1
  1. 获取:
    hget key field: 获取指定的field对应的值
hget myhash username
"lisi"

hgetall key:获取所有的field和value

hgetall myhash
1) "username"
2) "lisi"
3) "password"
4) "123"
  1. 删除: hdel key field
hdel myhash username
(integer) 1

三、 列表类型 list

可以添加一个元素到列表的头部(左边)或者尾部(右边)

  1. 添加:
    (1) lpush key value: 将元素加入列表左表
    (2) rpush key value:将元素加入列表右边
 lpush myList a
(integer) 1
lpush myList b
(integer) 2
rpush myList c
(integer) 3
  1. 获取:
    lrange key start end :范围获取
lrange myList 0 -1
1) "b"
2) "a"
3) "c"

存储原理

  1. 删除:
    lpop key: 删除列表最左边的元素,并将元素返回
    rpop key: 删除列表最右边的元素,并将元素返回

四、 集合类型 set

不允许重复元素

  1. 存储:sadd key value
sadd myset a
(integer) 1
sadd myset a
(integer) 0
  1. 获取:smembers key:获取set集合中所有元素
smembers myset
1) "a"
  1. 删除:srem key value:删除set集合中的某个元素
srem myset a
(integer) 1

五、有序集合类型 sortedset

不允许重复元素,且元素有顺序.每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。

  1. 存储:zadd key score value
 zadd mysort 60 zhangsan
(integer) 1
zadd mysort 50 lisi
(integer) 1
zadd mysort 80 wangwu
(integer) 1
  1. 获取:zrange key start end [withscores]
zrange mysort 0 -1
1) "lisi"
2) "zhangsan"
3) "wangwu"

以排名的形式

 zrange mysort 0 -1 withscores
1) "zhangsan"
2) "60"
3) "wangwu"
4) "80"
5) "lisi"
6) "500"
  1. 删除:zrem key value
zrem mysort lisi
(integer) 1

通用命令

  1. keys * : 查询所有的键
  2. type key : 获取键对应的value的类型
  3. del key:删除指定的key value

持久化

redis是一个内存数据库,当redis服务器重启,获取电脑重启,数据会丢失,我们可以将redis内存中的数据持久化保存到硬盘的文件中。

redis持久化机制:

一、 RDB:

默认方式,不需要进行配置,默认就使用这种机制,在一定的间隔时间中,检测key的变化情况,然后持久化数据
编辑redis.windwos.conf文件

save 900 1

after 900 sec (15 min) if at least 1 key changed

save 300 10

after 300 sec (5 min) if at least 10 keys changed

save 60 10000

after 60 sec if at least 10000 keys changed
  1. 重新启动redis服务器,并指定配置文件名称,redis-2.8.9>redis-server.exe redis.windows.conf

二、AOF:

日志记录的方式,可以记录每一条命令的操作。可以每一次命令操作后,持久化数据

  1. 编辑redis.windwos.conf文件
    appendonly no(关闭aof) --> appendonly yes (开启aof)

            # appendfsync always : 每一次操作都进行持久化appendfsync everysec : 每隔一秒进行一次持久化# appendfsync no   : 不进行持久化
    

基于实战中学习,学习快乐中成长
.
时间会回答成长,成长会回答梦想

JavaWeb部分 (JSON Redis )相关推荐

  1. JavaWeb笔记:第07章 MVC |EL |JST |Filter |Listener |JQuery |AJAX |Maven |JSON |Redis |Linux |Nginx

    JavaWeb笔记:第07章 MVC |EL |JST |Filter |Listener |JQuery |AJAX |Maven |JSON |Redis |Linux |Nginx 1. MVC ...

  2. web前端之后的4天(Ajax,json,redis,maven)

    web前端之后的10天(Ajax,json,redis,maven) day2(还是前端的内容) 1.AJAX 2.JSON AJAX: 1.概念:ASynchronous JavaScrip And ...

  3. IT兄弟连 JavaWeb教程 JSON和JSON字符串

    2019独角兽企业重金招聘Python工程师标准>>> JSON (JavaScript Object Notation)是JavaScript语言中的一种对象类型.JSON的好处是 ...

  4. Linux服务器安装JavaWeb环境(二) Redis,MySql,Zookeeper,Keepalive

    /*****************[安装RedisServer]****************/ 第一步:下载redis安装包 http://download.redis.io/releases/ ...

  5. redis如何将存储json和解析

    整合Redis jedis.application配置文件 host=127.0.0.1 port=6379 maxTotal=50 maxIdle=10 打开服务器和客户端 整体的代码 @GetMa ...

  6. python redis连接池获取后关闭_python通过连接池连接redis,操作redis队列

    在每次使用redis都进行连接的话会拉低redis的效率,都知道redis是基于内存的数据库,效率贼高,所以每次进行连接比真正使用消耗的资源和时间还多.所以为了节省资源,减少多次连接损耗,连接池的作用 ...

  7. Windows下安装Mongodb SpringBoot集成MongoDB和Redis多数据源

    全文内容: Mongodb安装 说明:Mongodb和redis是开发中常用的中间件,Redis的安装使用比较简单就不写了,只说本地也就是Windows安装Mongodb. SpringBoot集成M ...

  8. BeetleX.Redis基础操作和对象格式

    Decr 为键 key 储存的数字值减去一. 如果键 key 不存在, 那么键 key 的值会先被初始化为 0 , 然后再执行 DECR 操作. 如果键 key 储存的值不能被解释为数字, 那么 DE ...

  9. python学习笔记(十二)python操作redis

    1.python要操作redis 首先需要安装redis模块,然后导入才能使用 安装:pip install redis 导入:import redis 2.连接redis r = redis.Red ...

最新文章

  1. K - TimesIsMoney(查询)
  2. android读取短信内容简书,Android 获取App信息
  3. 《计算机网络》实验报告——常用网络命令
  4. C语言中open与fopen的的解释和区别
  5. 计算机网络自顶向下方法实验报告,计算机网络自顶向下方法试验三报告.doc
  6. matlab中instr,MATLAB 串口通信
  7. 大屏实时监控-2019年CSDN博客之星年度总评选(2019-02-07 13:47)
  8. jQuery Mobile中主题theme样式a-z
  9. Android 获取联系人列表
  10. 服务器上装的hadoop系统,在Ubuntu Server 18.04.1中安装Hadoop系统环境
  11. android:DDMS查看Threads
  12. -XX:NewRatio 命令
  13. 基于人脸识别的宿舍门禁系统
  14. Python关键字查询
  15. 黑客长期摇号不中黑掉北京小客车摇号网
  16. word 方框打勾_复制拿走即用
  17. kali linux 获取ip_Kali Linux常用服务配置教程获取IP地址
  18. 游戏编程模式之组件模式
  19. 动态爱心和3D旋转烟花代码
  20. checkpatch海思SDK代码遇见的常见错误《二》

热门文章

  1. EXCEL 文档自动生成目录
  2. latext插入双栏图片定位问题
  3. 基于halo快速搭建一个属于你自己的博客网站
  4. 鸿蒙神奇组件Ability的奇妙之旅
  5. python多个返回值
  6. 组件化、模块化、集中式、分布式、服务化、面向服务的架构、微服务架构
  7. VCF变异结果文件详解
  8. 机器学习(十三)k-svd字典学习
  9. java 窗体代码_Java 用户界面设计 求界面代码
  10. 前端如何实现模块化开发?