


How to efficiently store and read Go structure arrays to Redis using go-redis/redis v8?
Apr 02, 2025 pm 04:51 PM This article discusses how to efficiently store and read Go structure arrays to Redis using go-redis/redis v8
Saving the Go structure array directly to Redis will cause an error, because the SET
command of go-redis/redis v8
only supports string type key-value pairs.
The following code snippet demonstrates trying to store an array of type []model.sysrolemenu
directly to Redis and explains the cause of the error. The code is designed to get the menu tree structure and store it in Redis for quick access. After getting the getmenutree
tree data, I tried to use global.gva_redis.set
to directly store the menus
array, but because SET
method requires the value to be a string type, it failed.
The workaround is to convert the []model.sysrolemenu
array to a JSON string supported by Redis. After serializing it into a JSON string, it can be successfully stored in Redis; when reading it, it will be deserialized back to the Go structure array.
The modified getmenutree
function is as follows, converting menus
arrays to JSON strings before saving to Redis:
import ( "context" "encoding/json" "github.com/go-redis/redis/v8" "go.uber.org/zap" ) // ... other imports and code ... func GetMenuTree(roleId string) (err error, menus []model.SysRoleMenu) { err, menuTree := GetMenuTreeMap(roleId) menus = menuTree["0"] // ... other code ... jsonData, err := json.Marshal(menus) if err != nil { zap.L().Error("json marshal error", zap.Error(err)) return err, nil } err = global.gvaRedis.Set(context.Background(), "menuTree:" roleId, string(jsonData), 0).Err() if err != nil { zap.L().Error("redis set error", zap.Error(err)) return err, nil } return nil, menus } //A sample to read data func ReadMenuTree(roleId string) (err error, menus []model.SysRoleMenu) { val, err := global.gvaRedis.Get(context.Background(), "menuTree:" roleId).Result() if err != nil { if err == redis.Nil { return nil, nil //Key does not exist} return err, nil } err = json.Unmarshal([]byte(val), &menus) if err != nil { zap.L().Error("json unmarshal error", zap.Error(err)) return err, nil } return nil, menus }
Encode menus
array into a JSON string through the json.Marshal
function and store it in Redis. When reading data, use json.Unmarshal
for deserialization. This solves the problem that go-redis/redis v8
does not support direct storage of array structures.
The above is the detailed content of How to efficiently store and read Go structure arrays to Redis using go-redis/redis v8?. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undress AI Tool
Undress images for free

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

When writing efficient, readable and standardized SQL code, you need to pay attention to the following aspects: 1. Improve code readability and use indentation, line breaks and alias. 2. Optimize query performance, select necessary fields and use indexes. 3. Avoid common mistakes, such as forgetting the WHERE clause or JOIN condition. 4. Combining business requirements and database features, such as using window functions. 5. Use version control tools to manage SQL scripts and refactor the code regularly. Through these methods, we can write more elegant and efficient SQL code.

The steps for troubleshooting and repairing Redis master-slave replication failures include: 1. Check the network connection and use ping or telnet to test connectivity; 2. Check the Redis configuration file to ensure that the replicaof and repl-timeout are set correctly; 3. Check the Redis log file and find error information; 4. If it is a network problem, try to restart the network device or switch the alternate path; 5. If it is a configuration problem, modify the configuration file; 6. If it is a data synchronization problem, use the SLAVEOF command to resync the data.

With the vigorous development of the Internet, Korean comics (Korean comics) have won the love of more and more readers around the world with their exquisite painting style, fascinating plots and rich and diverse themes. If you want to travel anywhere, in the exciting Korean comic world, it is crucial to find a stable, free and resource-rich online reading platform. This article will provide you with a detailed guide to watching Korean comics online for free comics, helping you easily start your Korean comic journey.

The quick location and processing steps for Redis cluster node failure are as follows: 1. Confirm the fault: Use the CLUSTERNODES command to view the node status. If the fail is displayed, the node will fail. 2. Determine the cause: Check the network, hardware, and configuration. Common problems include memory limits exceeding. 3. Repair and restore: Take measures based on the reasons, such as restarting the service, replacing the hardware or modifying the configuration. 4. Notes: Ensure data consistency, select appropriate failover policies, and establish monitoring and alarm systems.

To log in to AO3, first access the available mirrored sites, and then follow the steps: 1. Select the mirrored site and enter the URL; 2. Click the "Log In" button in the upper right corner of the homepage or in the navigation bar; 3. Enter the user name and password; 4. Select "Remember me" to automatically log in next time (but do not select public computers); 5. After confirming that the information is correct, click "Log In" to complete the login. If you encounter problems, you can check the network connection, confirm the correctness of the username and password, clear the browser cache and cookies, change the mirrored site, and try to use the Tor browser. In the end, you can contact AO3 customer service if it still cannot be resolved. In addition, when using AO3, you must respect the author's copyright and pay attention to content grading

Redis and RabbitMQ each have their own advantages in performance and joint application scenarios. 1.Redis performs excellently in data reading and writing, with a latency of up to microseconds, suitable for high concurrency scenarios. 2.RabbitMQ focuses on messaging, latency at milliseconds, and supports multi-queue and consumer models. 3. In joint applications, Redis can be used for data storage, RabbitMQ handles asynchronous tasks, and improves system response speed and reliability.

Global cryptocurrency exchange Kucoin recently completed the formation of its European leadership team, appointing two highly-watched executives. This personnel change is part of Kucoin’s accelerated layout in the EU market, especially in response to the upcoming cryptoasset management regulations (MICAR). Currently, the company is advancing the relevant licensing process through the Austrian Financial Markets Authority (FMA) and introducing senior experts from traditional finance and crypto to strengthen its management. KucoinEU is currently actively communicating with the FMA to achieve full compliance operations with the goal of providing a complete cryptocurrency service within the European Economic Area (EEA). At this stage, the company has not yet conducted business within the EU or EEA and is about to obtain the corresponding license.

Methods to synchronize Oracle with SQLServer include the use of ETL tools, database replication technology, third-party synchronization tools, and custom scripts. 1. ETL tools such as Informatica and Talend can be used for data extraction, conversion and loading. 2. Oracle's GoldenGate and SQLServer's ReplicationServices provide real-time or near-real-time synchronization. 3. Third-party tools such as Debezium and Attunity provide simplified configuration and powerful synchronization capabilities. 4. Custom scripts can be flexibly customized according to your needs using Python or Java.
