GVKun编程网logo

Redis性能,将json对象存储为字符串(redis存储json数据)

14

在本文中,我们将给您介绍关于Redis性能,将json对象存储为字符串的详细内容,并且为您解答redis存储json数据的相关问题,此外,我们还将为您提供关于c#–我如何将json字符串转换为Json

在本文中,我们将给您介绍关于Redis性能,将json对象存储为字符串的详细内容,并且为您解答redis存储json数据的相关问题,此外,我们还将为您提供关于c# – 我如何将json字符串转换为Json对象、fastjson: json对象,json对象数组,javabean对象,json字符串之间的相互转化、golang怎么将JSON字符串转为JSON对象、hash vs json, python 对象存储到 redis 的选择的知识。

本文目录一览:

Redis性能,将json对象存储为字符串(redis存储json数据)

Redis性能,将json对象存储为字符串(redis存储json数据)

如何解决Redis性能,将json对象存储为字符串?

您可以使用Redis哈希数据结构来存储JSON对象字段和值。例如,您的“用户”集仍然可以用作存储所有用户的列表,并且您的单个JSON对象可以像这样存储在哈希中:

db.hmset("user:id", JSON.stringify(jsonObj));

现在,您可以通过密钥获取所有用户或仅特定用户的密钥(从中只能获取/设置指定的字段/值)。另外,这两个问题可能与您的情况有关。

这样,检索记录将变得更加容易(然后我将不得不使用JSON对其进行解析)。

的确如此,但是使用哈希数据结构,您只能获取/设置您需要使用的字段/值。如果您只想更改对象的一部分,则检索整个JSON对象可能会导致性能降低(取决于您执行操作的频率)(另一件事是您每次都需要对对象进行字符串化/解析)。

解决方法

我需要保存一个用户模型,例如:

{ "nickname": "alan","email": ...,"password":...,...} // and a couple of other fields

今天,我使用一个Set:users
在这个Set中,我有一个类似于user:alan的
成员在这个成员中,我上面有哈希

这很好,但是我只是想知道是否可以使用以下方法代替上述方法:

仍使用用户集(以轻松获取用户(成员)列表)
在此集中,仅使用键/值存储,例如:

键:alan值:上述用户哈希的字符串化版本

这样,检索记录将变得更加容易(然后我将不得不使用JSON对其进行解析)。

我是Redis的新手,我不确定什么是最好的。你怎么看 ?

c# – 我如何将json字符串转换为Json对象

c# – 我如何将json字符串转换为Json对象

参见英文答案 > Convert JSON String to JSON Object c#                                    7个
我有json字符串的方法,我想将json字符串转换为json对象.我试过下面的方法它显示内存超出如何解决错误.
我试过这个字符串抛出ajax它的工作正常.但我如何从后端的字符串转换为数据表.任何建议.
我的代码.

public ActionResult JosnString()
        {

      string str = "{\"delivery\": [{\"status\": 2,\"resp_msg\": \"5.4.1 [renard.allenll@transdev.com]: Recipient address rejected: Access denied [HE1EUR02FT054.eop-EUR02.prod.protection.outlook.com]\",\"mail_from\": \"vision@transdev.com\",\"time_started\": 1539808420,\"time_finished\": 1539808426,\"resp_code_description\": \"The requested command Failed because the user's mailBox was unavailable (for example because it was not found,or because the command was rejected for policy reasons).\",\"sender_id\": 9007074,\"campaign_id\": \"\",\"rcpt_to\": \"renard.allenll@transdev.com\",\"tries\": 0,\"resp_code\": 550,\"tracking_id\": \"2939c3ea-59e8-4019-9f4b-4cd4214254b4\",\"resp_class\": 10,\"subject\": \"Las Vegas Notification - Passenger Fall- No Injury (Auto Email \u2013 Do Not Repl (#718701)\"},{\"status\": 2,\"resp_msg\": \"5.4.1 [Theodrick.mccullom@transdev.com]: Recipient address rejected: Access denied [HE1EUR02FT042.eop-EUR02.prod.protection.outlook.com]\",\"time_started\": 1539809940,\"time_finished\": 1539809944,\"rcpt_to\": \"theodrick.mccullom@transdev.com\",\"tracking_id\": \"2c75c0e1-cf9c-4c92-9d11-e6cebfc28300\",\"subject\": \"Las Vegas Notification - Safety- Passenger Event (Auto Email \u2013 Do Not Reply) (#724957)\"},\"resp_msg\": \"5.4.1 [tricia.mumford@transdev.com]: Recipient address rejected: Access denied [VE1EUR02FT003.eop-EUR02.prod.protection.outlook.com]\",\"time_started\": 1539810919,\"time_finished\": 1539810926,\"rcpt_to\": \"tricia.mumford@transdev.com\",\"tracking_id\": \"2f7a87e4-513e-4358-b1b6-bb8febdff35d\",\"subject\": \"SV Alert Alert (#725159)\"},\"resp_msg\": \"5.4.1 [Theodrick.mccullom@transdev.com]: Recipient address rejected: Access denied [HE1EUR02FT033.eop-EUR02.prod.protection.outlook.com]\",\"time_started\": 1539815408,\"time_finished\": 1539815412,\"tracking_id\": \"e9bb47c0-22d5-4781-ac2a-9bef56232255\",\"subject\": \"Las Vegas Notification - Safety- Accident with no injuries (Auto Email \u2013 Do (#733279)\"},\"resp_msg\": \"5.4.1 [francisco.sanchez@transdev.com]: Recipient address rejected: Access denied [HE1EUR02FT026.eop-EUR02.prod.protection.outlook.com]\",\"time_started\": 1539815465,\"time_finished\": 1539815469,\"rcpt_to\": \"francisco.sanchez@transdev.com\",\"tracking_id\": \"c5baf56c-89da-4388-a692-da2b84862f0a\",\"subject\": \"Malfunctioning GPS,please reboot this these device(s). (#733299)\"},\"resp_msg\": \"5.4.1 [carl.parr@transdev.com]: Recipient address rejected: Access denied [HE1EUR02FT019.eop-EUR02.prod.protection.outlook.com]\",\"time_started\": 1539816062,\"time_finished\": 1539816067,\"rcpt_to\": \"carl.parr@transdev.com\",\"tracking_id\": \"e6299d04-5aac-43d3-8593-1a3c548e336f\",\"subject\": \"SV Alert Alert (#733431)\"},\"resp_msg\": \"5.4.1 [Theodrick.mccullom@transdev.com]: Recipient address rejected: Access denied [HE1EUR02FT038.eop-EUR02.prod.protection.outlook.com]\",\"time_started\": 1539816315,\"time_finished\": 1539816318,\"tracking_id\": \"ea9caff3-364e-4a32-8365-98a897a6bbc5\",\"subject\": \"Las Vegas Notification - Safety- Accident with no injuries (Auto Email \u2013 Do (#734371)\"},\"resp_msg\": \"5.4.1 [francisco.sanchez@transdev.com]: Recipient address rejected: Access denied [VE1EUR02FT035.eop-EUR02.prod.protection.outlook.com]\",\"time_started\": 1539820874,\"time_finished\": 1539820877,\"tracking_id\": \"b81e47e5-5211-425a-a7be-5b75379bf3b1\",please reboot this these device(s). (#735305)\"},\"resp_msg\": \"5.4.1 [francisco.sanchez@transdev.com]: Recipient address rejected: Access denied [VE1EUR02FT053.eop-EUR02.prod.protection.outlook.com]\",\"time_started\": 1539826279,\"time_finished\": 1539826283,\"tracking_id\": \"c2b7a520-a994-49a6-b34b-96113f5960d5\",please reboot this these device(s). (#735539)\"},\"resp_msg\": \"5.4.1 [Ramona.Trotter@transdev.com]: Recipient address rejected: Access denied [HE1EUR02FT023.eop-EUR02.prod.protection.outlook.com]\",\"time_started\": 1539829584,\"time_finished\": 1539829587,\"rcpt_to\": \"ramona.trotter@transdev.com\",\"tracking_id\": \"264645cd-0792-445b-9fd4-1cccd0746cfb\",\"subject\": \"Driver dispatch Log Entries (Auto Email \u2013 Do Not Reply) (#736221)\"}],\"last_update_time\": 1540421479.703088}";
                JavaScriptSerializer serializer = new JavaScriptSerializer();
                DataSet dt = (DataSet)JsonConvert.DeserializeObject(str,(typeof(DataSet)));
            return new EmptyResult();
}

解决方法

你可以试试这个

string str = "{ 'context_name': { 'lower_bound': 'value','pper_bound': 'value','values': [ 'value1','valueN' ] } }";
    JavaScriptSerializer j = new JavaScriptSerializer();
    object a = j.Deserialize(str,typeof(object));

fastjson: json对象,json对象数组,javabean对象,json字符串之间的相互转化

fastjson: json对象,json对象数组,javabean对象,json字符串之间的相互转化

fastjson: json对象,json对象数组,javabean对象,json字符串之间的相互转化

在开发过程中,经常需要和前端交互数据,数据交互的格式都是JSON,在此过程中免不了json字符串与JSON对象互相转换,自己在这一方面的概念总是很混乱,最近看源码和博客,在此记录一下。注意:全程用的是fastjson

首先JSON有两种格式,一种是对象格式,一种是对象数组。

在JSON使用中主要的3个类:JSONJSONObjecJSONArray

其中JSONObjecJSONArray继承于JSON的。

JSON对象(JSONObject)

{"id":1,"name":"chen"}

JSON对象数组(JSONArray)

[ {"id":1,"name":"chen"}, {"id":2,"name":"张三"}]

下面直接进入正题:

Java Bean 和JSON字符串的互转

Java Bean 转 JSON字符串

Java Bean是指Java中的一个普通对象(实体类)例如:

public class Student{ private String name; // 姓名 private Integer age; // 年龄  public void setName(String name){  this.name = name; } public String getName(){  return name; } public void setAge(Integer age){  this.age = age; } public Integer getAge(){  return age; } @Override public String toString() {  return "Student{" + "name=''" + name + ''\'''' + ", age=" + age + ''}''; }}

使用JSON类的toJSONString()方法,实现JSON对象转化为JSON字符串和Java Bean对象转化为JSON字符串。仔细观察源码发现,该方法经过多次重载,但最终都是实现JSON对象转化为JSON字符串和Java Bean对象转化为JSON字符串。

@Testpublic void BeanToJSONTest(){ Student student = new Student(); student.setName("小明"); student.setAge(20);  String s1 = JSON.toJSONString(student); St..............

golang怎么将JSON字符串转为JSON对象

golang怎么将JSON字符串转为JSON对象

在go语言中,使用json(javascript object notation)是非常常见的。json是一种轻量级的数据交换格式,其易于读写和解析,因此在现代应用程序中广泛使用。在处理json数据时,我们需要注意一些坑。

其中一个问题是在处理JSON字符串时,我们需要进行转义。例如,如果JSON字符串中包含特殊字符(例如双引号、反斜杠等),则必须将其转义才能正确解析。否则,可能会导致解析错误或安全性问题。

在Go语言中,我们可以使用json.Marshal和json.Unmarshal这两个函数来进行JSON数据的编解码。在编码时,Go将自动转义JSON字符串。例如,下面的代码演示了如何在Go中将一个包含特殊字符的JSON字符串转换为JSON对象:

package main

import (
    "encoding/json"
    "fmt"
)

func main() {
    jsonString := `{"name":"Alan","age":30,"info":"hello \"world\""}`
    data := make(map[string]interface{})
    err := json.Unmarshal([]byte(jsonString), &data)
    if err != nil {
        fmt.Println("Unmarshal error:", err)
        return
    }
    fmt.Println("Name:", data["name"])
    fmt.Println("Age:", data["age"])
    fmt.Println("Info:", data["info"])
}
登录后复制

在上面的代码中,我们定义了一个包含特殊字符的JSON字符串,并将其解码为一个Go map。当我们打印Go map中的值时,我们会发现包含特殊字符的字符串已经被正确转义。

除了在编码和解码时进行必要的转义外,我们还需注意JSON数据的安全性。例如,用户输入的JSON数据可能包含恶意的代码,我们需要确保解析它时没有意外的后果。

立即学习“go语言免费学习笔记(深入)”;

点击下载“修复打印机驱动工具”;

为了确保JSON数据的安全性,我们需要使用一些工具来验证JSON数据的完整性,并且只使用受信任的JSON库来解析数据。此外,我们还需要限制JSON数据的大小和复杂性,以防止攻击者利用其进行拒绝服务攻击或其他安全漏洞。

总之,在处理JSON数据时,我们需要注意转义和安全性。使用Go提供的JSON编解码函数可以简化我们的工作,并且注意一些基本的安全实践可以帮助我们避免潜在的安全威胁。

以上就是golang怎么将JSON字符串转为JSON对象的详细内容,更多请关注php中文网其它相关文章!

hash vs json, python 对象存储到 redis 的选择

hash vs json, python 对象存储到 redis 的选择

一直懒得写博文,不知道这次能坚持多久,闲话不提,进入正文。

测试需要测试综合能力,也就是create, get, update, delete 的能力,于是写了两个方法,分别用json和hash进行上述四种操作:

#!/usr/bin/python
#coding=utf-8

import redis

import ujson as json


db = redis.StrictRedis(host=''localhost'', port=6379, db=0)

mapper = {}

for letter in "abcdefghijklmnopqrstuvwxyz":
    mapper[letter] = '', ''.join([letter] * 50)


def test_json():
    # create
    db.set(''mapper'', json.dumps(mapper))
    # get
    json.loads(db.get(''mapper''))
    # update( updating by json, should get first.)
    x = json.loads(db.get(''mapper''))
    x[''a''] = ''a''
    db.set(''mapper'', json.dumps(mapper))
    # delete
    db.delete(''mapper'')


def test_hash():
    # create
    db.hmset(''mapper'', mapper)
    # get
    db.hgetall(''mapper'')
    # update
    db.hset(''mapper'', ''a'', ''a'')
    # delete
    db.delete(''mapper'')

import timeit

db.flushdb()

print "json", timeit.timeit("test_json()", setup="from __main__ import test_json", number=100000)

db.flushdb()

print "hash", timeit.timeit("test_hash()", setup="from __main__ import test_hash", number=100000)

测试结果:

json 41.7783219814

hash 97.2103219032

[Finished in 139.1s]

是不是很惊呀?json的性能是hash的一倍!

关于Redis性能,将json对象存储为字符串redis存储json数据的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于c# – 我如何将json字符串转换为Json对象、fastjson: json对象,json对象数组,javabean对象,json字符串之间的相互转化、golang怎么将JSON字符串转为JSON对象、hash vs json, python 对象存储到 redis 的选择等相关内容,可以在本站寻找。

本文标签: