Queenie  Davis

Queenie Davis

1664819640

Memds: A Reimplementation Of Redis for Learning Purpose with Rust

memds

A reimplementation of Redis for fun.

Contributing Guide

Test

Run test with:

cargo test

Benchmark

  1. run memds:

RUST_LOG=error cargo run --release

memds is currently hardcoded to run on port 6901
  1. run redis-benchmark: with pipelining:
redis-benchmark -t set,get -n 1000000 -r 1000000 -p 6901 -P 30

without pipelining:

redis-benchmark -t set,get -n 1000000 -r 1000000 -p 6901

Download Details:

Author: unrealhoang
Source Code: https://github.com/unrealhoang/memds

#rust 

What is GEEK

Buddha Community

Memds: A Reimplementation Of Redis for Learning Purpose with Rust
Loma  Baumbach

Loma Baumbach

1596679140

Redis Transactions & Long-Running Lua Scripts

Redis offers two mechanisms for handling transactions – MULTI/EXEC based transactions and Lua scripts evaluation. Redis Lua scripting is the recommended approach and is fairly popular in usage.

Our Redis™ customers who have Lua scripts deployed often report this error – “BUSY Redis is busy running a script. You can only call SCRIPT KILL or SHUTDOWN NOSAVE”. In this post, we will explain the Redis transactional property of scripts, what this error is about, and why we must be extra careful about it on Sentinel-managed systems that can failover.

Redis Lua Scripts Diagram - ScaleGrid Blog

Transactional Nature of Redis Lua Scripts

Redis “transactions” aren’t really transactions as understood conventionally – in case of errors, there is no rollback of writes made by the script.

Atomicity” of Redis scripts is guaranteed in the following manner:

  • Once a script begins executing, all other commands/scripts are blocked until the script completes. So, other clients either see the changes made by the script or they don’t. This is because they can only execute either before the script or after the script.
  • However, Redis doesn’t do rollbacks, so on an error within a script, any changes already made by the script will be retained and future commands/scripts will see those partial changes.
  • Since all other clients are blocked while the script executes, it is critical that the script is well-behaved and finishes in time.

The ‘lua-time-limit’ Value

It is highly recommended that the script complete within a time limit. Redis enforces this in a weak manner with the ‘lua-time-limit’ value. This is the maximum allowed time (in ms) that the script is allowed to run. The default value is 5 seconds. This is a really long time for CPU-bound activity (scripts have limited access and can’t run commands that access the disk).

However, the script is not killed when it executes beyond this time. Redis starts accepting client commands again, but responds to them with a BUSY error.

If you must kill the script at this point, there are two options available:

  • SCRIPT KILL command can be used to stop a script that hasn’t yet done any writes.
  • If the script has already performed writes to the server and must still be killed, use the SHUTDOWN NOSAVE to shutdown the server completely.

It is usually better to just wait for the script to complete its operation. The complete information on methods to kill the script execution and related behavior are available in the documentation.

#cloud #database #developer #high availability #howto #redis #scalegrid #lua-time-limit #redis diagram #redis master #redis scripts #redis sentinel #redis servers #redis transactions #sentinel-managed #server failures

Serde Rust: Serialization Framework for Rust

Serde

*Serde is a framework for serializing and deserializing Rust data structures efficiently and generically.*

You may be looking for:

Serde in action

Click to show Cargo.toml. Run this code in the playground.

[dependencies]

# The core APIs, including the Serialize and Deserialize traits. Always
# required when using Serde. The "derive" feature is only required when
# using #[derive(Serialize, Deserialize)] to make Serde work with structs
# and enums defined in your crate.
serde = { version = "1.0", features = ["derive"] }

# Each data format lives in its own crate; the sample code below uses JSON
# but you may be using a different one.
serde_json = "1.0"

 

use serde::{Serialize, Deserialize};

#[derive(Serialize, Deserialize, Debug)]
struct Point {
    x: i32,
    y: i32,
}

fn main() {
    let point = Point { x: 1, y: 2 };

    // Convert the Point to a JSON string.
    let serialized = serde_json::to_string(&point).unwrap();

    // Prints serialized = {"x":1,"y":2}
    println!("serialized = {}", serialized);

    // Convert the JSON string back to a Point.
    let deserialized: Point = serde_json::from_str(&serialized).unwrap();

    // Prints deserialized = Point { x: 1, y: 2 }
    println!("deserialized = {:?}", deserialized);
}

Getting help

Serde is one of the most widely used Rust libraries so any place that Rustaceans congregate will be able to help you out. For chat, consider trying the #rust-questions or #rust-beginners channels of the unofficial community Discord (invite: https://discord.gg/rust-lang-community), the #rust-usage or #beginners channels of the official Rust Project Discord (invite: https://discord.gg/rust-lang), or the #general stream in Zulip. For asynchronous, consider the [rust] tag on StackOverflow, the /r/rust subreddit which has a pinned weekly easy questions post, or the Rust Discourse forum. It's acceptable to file a support issue in this repo but they tend not to get as many eyes as any of the above and may get closed without a response after some time.

Download Details:
Author: serde-rs
Source Code: https://github.com/serde-rs/serde
License: View license

#rust  #rustlang 

Jerad  Bailey

Jerad Bailey

1598891580

Google Reveals "What is being Transferred” in Transfer Learning

Recently, researchers from Google proposed the solution of a very fundamental question in the machine learning community — What is being transferred in Transfer Learning? They explained various tools and analyses to address the fundamental question.

The ability to transfer the domain knowledge of one machine in which it is trained on to another where the data is usually scarce is one of the desired capabilities for machines. Researchers around the globe have been using transfer learning in various deep learning applications, including object detection, image classification, medical imaging tasks, among others.

#developers corner #learn transfer learning #machine learning #transfer learning #transfer learning methods #transfer learning resources

Andre  Fisher

Andre Fisher

1659087180

Memds: A Reimplementation Of Redis for Learning Purpose in Rust

memds

A reimplementation of Redis for fun.

Contributing Guide

Test

Run test with:

cargo test

Benchmark

  1. run memds:
RUST_LOG=error cargo run --release

memds is currently hardcoded to run on port 6901

  1. run redis-benchmark: with pipelining:
redis-benchmark -t set,get -n 1000000 -r 1000000 -p 6901 -P 30

without pipelining:

redis-benchmark -t set,get -n 1000000 -r 1000000 -p 6901

Author: unrealhoang
Source code: https://github.com/unrealhoang/memds
License:

#rust 

Queenie  Davis

Queenie Davis

1664819640

Memds: A Reimplementation Of Redis for Learning Purpose with Rust

memds

A reimplementation of Redis for fun.

Contributing Guide

Test

Run test with:

cargo test

Benchmark

  1. run memds:

RUST_LOG=error cargo run --release

memds is currently hardcoded to run on port 6901
  1. run redis-benchmark: with pipelining:
redis-benchmark -t set,get -n 1000000 -r 1000000 -p 6901 -P 30

without pipelining:

redis-benchmark -t set,get -n 1000000 -r 1000000 -p 6901

Download Details:

Author: unrealhoang
Source Code: https://github.com/unrealhoang/memds

#rust