Redis-基本操作分区

Redis 分区
 分区是分割数据到多个Redis实例的处理过程,因此每个实例只保存key的一个子集。

分区的优势
    通过利用多台计算机内存的和值,允许我们构造更大的数据库。
    通过多核和多台计算机,允许我们扩展计算能力;通过多台计算机和网络适配器,允许我们扩展网络带宽。

分区的不足
 redis的一些特性在分区方面表现的不是很好:
    涉及多个key的操作通常是不被支持的。举例来说,当两个set映射到不同的redis实例上时,你就不能对这两个set执行交集操作。
    涉及多个key的redis事务不能使用。
    当使用分区时,数据处理较为复杂,比如你需要处理多个rdb/aof文件,并且从多个实例和主机备份持久化文件。
    增加或删除容量也比较复杂。redis集群大多数支持在运行时增加、删除节点的透明数据平衡的能力,但是类似于客户端分区、代理等其他系统则不支持这项特性。然而,一种叫做presharding的技术对此是有帮助的。

分区类型
    Redis 有两种类型分区。 假设有4个Redis实例 R0,R1,R2,R3,和类似user:1,user:2这样的表示用户的多个key,对既定的key有多种不同方式来选择这个key存放在哪个实例中。也就是说,有不同的系统来映射某个key到某个Redis服务。

范围分区
    最简单的分区方式是按范围分区,就是映射一定范围的对象到特定的Redis实例。
    比如,ID从0到10000的用户会保存到实例R0,ID从10001到 20000的用户会保存到R1,以此类推。
这种方式是可行的,并且在实际中使用,不足就是要有一个区间范围到实例的映射表。这个表要被管理,同时还需要各 种对象的映射表,通常对Redis来说并非是好的方法。

哈希分区
另外一种分区方法是hash分区。这对任何key都适用,也无需是object_name:这种形式,像下面描述的一样简单:
    用一个hash函数将key转换为一个数字,比如使用crc32 hash函数。对key foobar执行crc32(foobar)会输出类似93024922的整数。
    对这个整数取模,将其转化为0-3之间的数字,就可以将这个整数映射到4个Redis实例中的一个了。93024922 % 4 = 2,就是说key foobar应该被存到R2实例中。注意:取模操作是取除的余数,通常在多种编程语言中用%操作符实现。

时间: 2024-11-03 17:44:33

Redis-基本操作分区的相关文章

三、Redis基本操作——List

小喵的唠叨话:前面我们介绍了Redis的string的数据结构的原理和操作.当时我们提到Redis的键值对不仅仅是字符串.而这次我们就要介绍Redis的第二个数据结构了,List(链表).由于List在原理上的实现并不是特别的复杂,我们在这里将原理和具体的命令都放在一起介绍. 小喵的个人博客地址: http://www.miaoerduo.com/ ,欢迎随时骚扰~ 该博客原地址: http://www.miaoerduo.com/redis/三.redis基本操作-list.html ,排版应

jedis使用线程池封装redis基本操作

redis客户端 jedis 常用的 操作 key value hash list set zset 的基本操作 package cn.zto.util; import java.util.List; import java.util.Map; import java.util.Set; import org.junit.Test; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; import red

兄弟连学python 课堂笔记 ---- Redis基本操作

基本操作 Redis 是 Key-Value 内存数据库,操作是通过各种指令进行的,比如 `SET` 指令可以设置键值对,而 `GET` 指令则获取某一个键的值.不同的数据结构,Redis 有不同的指令,这样指令一共有几十个,下面主要介绍一些常用的指令. Redis 对 Key 也就是键有各种各样的指令,主要有下面的指令(下面的指令中小写字符串都是参数,可以自定义):>keys *  //返回键(key) >keys list*   //返回名以list开头的所有键(key)>exist

Redis基本操作-20150608

[http://my.oschina.net/u/241255/blog/206991] Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API. Redis和普通的Key-Value结构不同,Redis的Key支持灵活的数据结构,除了strings,还有hashes.lists. sets 和sorted sets等结构.正是这些灵活的数据结构,丰富了Redis的应用场景,能满足更多业务上的灵活存储需求.    

Redis基本操作

不同于Memcached的是, Redis提供持久化存储, 支持多种数据结构, 支持数据备份. 安装 wget http://download.redis.io/releases/redis-2.8.17.tar.gz tar xzf redis-2.8.17.tar.gz cd redis-2.8.17 make make完后 redis-2.8.17目录下会出现编译后的redis服务程序redis-server,还有用于测试的客户端程序redis-cli,两个程序位于安装目录 src 目录下

一、Redis基本操作——String(原理篇)

小喵的唠叨话:最近京东图书大减价,小喵手痒了就买了本<Redis设计与实现>[1]来看看.这里权当小喵看书的笔记啦.这一系列的模式,主要是先介绍Redis的实现原理(可能很大一部分会直接照搬原作者的描述),加上小喵自己的想法,之后配合Redis官网上的各种相关的操作命令(原书上貌似没有很多的介绍命令). 小喵的个人博客地址: http://miaoerduo.com, 随时欢迎各位的大家. 本章介绍Redis中最常用到的字符串(String). Redis的字符串(String)的实现 小喵之

redis 基本操作

Redis系统管理 实验简介 上一节实验讲述了Redis的基本数据类型,本实验继续讲解Redis相关命令及管理操作. 在Redis中,命令大小写不敏感. 一.适合全体类型的常用命令 启动redis服务和redis-cli命令界面继续后续实验: $ sudo service redis-server start $ redis-cli (1)EXISTS and DEL EXISTS key 判断一个key是否存在;存在返回 1;否则返回0; DEL key 删除某个key,或是一系列key;DE

memcached &amp; redis基本操作

memcached 安装与连接 使用docker进行启动:docker run -p 11211:11211 -d --name memcached memcached 使用telnet 进行连接:telnet 10.141.4.25 11211 常用操作 存储命令 set set key flags exptime bytes [noreply] value 实例: set mykey 05005 relax add add key flags exptime bytes [noreply]

redis基本操作之hmset/hmget

import redis.clients.jedis.Jedis; import java.util.HashMap; import java.util.List; import java.util.Map; public class RedisUtil { private static Jedis redis=new Jedis("192.168.146.101",6379); public static DeviceInfo getdeviceid(String deviceid)

python redis基本操作

#!/usr/bin/env python #-*- coding:utf-8 -*- # author:Lenovo # datetime:2019/4/24 16:26 # software: PyCharm import redis #链接服务器 config={"host":"127.0.0.1","port":6379,'password':'XXXX','db':0}#没有密码password 可不写 db 数据库 #方式一 #cli