Skip to main content

HotkeysOptions

Struct HotkeysOptions 

Source
#[non_exhaustive]
pub struct HotkeysOptions { /* private fields */ }
Expand description

Options for the HOTKEYS START command.

At least one of cpu or net must be enabled to specify which metrics to collect. The METRICS count is automatically derived from how many metric types are enabled.

Use HotkeysOptions::new_with_cpu() or HotkeysOptions::new_with_net() constructors to create valid options with at least one metric enabled.

§Example

use redis::{HotkeysOptions, HotkeysCommands};

let client = redis::Client::open("redis://127.0.0.1/")?;
let mut con = client.get_connection()?;

// Track hotkeys by both CPU and network usage for 60 seconds
let opts = HotkeysOptions::new_with_cpu()
    .and_net()
    .with_duration_secs(60);

con.hotkeys_start(opts)?;

Implementations§

Source§

impl HotkeysOptions

Source

pub fn new_with_cpu() -> Self

Creates options to track hotkeys by CPU time percentage.

§Example
use redis::HotkeysOptions;

// Track hotkeys by CPU time
let opts = HotkeysOptions::new_with_cpu();

// Track by both CPU and network
let opts = HotkeysOptions::new_with_cpu().and_net();
Source

pub fn new_with_net() -> Self

Creates options to track hotkeys by network bytes percentage.

§Example
use redis::HotkeysOptions;

// Track hotkeys by network bytes
let opts = HotkeysOptions::new_with_net();

// Track by both network and CPU
let opts = HotkeysOptions::new_with_net().and_cpu();
Source

pub fn and_cpu(self) -> Self

Also track hotkeys by CPU time percentage.

Used when both metrics are needed and the options were created using HotkeysOptions::new_with_net()

Source

pub fn and_net(self) -> Self

Also track hotkeys by network bytes percentage.

Used when both metrics are needed and the options were created using HotkeysOptions::new_with_cpu()

Source

pub fn with_count(self, k: u64) -> Result<Self, String>

Set the value of K for top-K hotkeys tracking.

This is the COUNT parameter in the Redis command.

§Errors

Returns an error if k is not in the valid range 1..=64 (see HOTKEYS_COUNT_MIN and HOTKEYS_COUNT_MAX).

Source

pub fn with_duration_secs(self, seconds: u64) -> Self

Set the duration in seconds for how long tracking should run.

After this time period, tracking will automatically stop. If not specified, tracking continues until manually stopped with HOTKEYS STOP.

Source

pub fn with_sample_ratio(self, ratio: u64) -> Self

Set the sampling ratio for probabilistic tracking.

Each key is sampled with probability 1/ratio. Higher values reduce performance impact but may miss some hotkeys. Lower values provide more accurate results but with higher performance cost.

Source

pub fn with_slots(self, slots: Vec<u16>) -> Self

Set specific hash slots to track in a cluster environment.

Only keys that hash to the specified slots will be tracked. Useful for narrowing tracking to a subset of the slots owned by a single shard.

§When to use

This option is meaningful only in cluster mode and only with single-node routing (e.g. RoutingInfo::SingleNode) targeting a primary that owns the requested slots. The Redis server will reject the command if any of the requested slots are not owned by the receiving node.

When fanning the command out to every node (e.g. MultipleNodeRoutingInfo::AllMasters), omit with_slots and let each primary track the keys for the slots it owns, otherwise every primary that does not own the supplied slot list will return an error.

Note: Using SLOTS when not in cluster mode will result in an error.

Trait Implementations§

Source§

impl Clone for HotkeysOptions

Source§

fn clone(&self) -> HotkeysOptions

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for HotkeysOptions

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl ToRedisArgs for HotkeysOptions

Source§

fn write_redis_args<W>(&self, out: &mut W)
where W: ?Sized + RedisWrite,

This writes the value into a vector of bytes. Each item is a single argument. Most items generate a single item. Read more
Source§

fn num_of_args(&self) -> usize

Returns the number of arguments this value will generate. Read more
Source§

fn to_redis_args(&self) -> Vec<Vec<u8>>

This converts the value into a vector of bytes. Each item is a single argument. Most items generate a vector of a single item. Read more
Source§

fn describe_numeric_behavior(&self) -> NumericBehavior

Returns an information about the contained value with regards to it’s numeric behavior in a redis context. This is used in some high level concepts to switch between different implementations of redis functions (for instance INCR vs INCRBYFLOAT).

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DynClone for T
where T: Clone,

Source§

fn __clone_box(&self, _: Private) -> *mut ()

Source§

impl<T> ErasedDestructor for T
where T: 'static,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> MaybeSendSync for T

Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more