Redis学习笔记之Redis基本数据结构】的更多相关文章

Redis基础数据结构 Redis有5种基本数据结构:String(字符串).list(列表).set(集合).hash(哈希).zset(有序集合) 字符串string 字符串类型是Redis的value最简单的数据结构,类似与Java语言中的ArrayList(数字列表),不过在Redis里String是一种动态字符串 Redis里的String采用预分配冗余空间的方法 set & get >set keyname test OK >get keyname test //key如果…
原来看过 redisbook 这本书,对 redis 的基本功能都已经熟悉了,从上周开始看 redis 的源码.目前目标是吃透 redis 的数据结构.我们都知道,在 redis 中一共有5种数据结构,那每种数据结构的使用场景都是什么呢? String——字符串 Hash——字典 List——列表 Set——集合 Sorted Set——有序集合 下面我们就来简单说明一下它们各自的使用场景: 0x00 String——字符串 String 数据结构是简单的 key-value 类型,value…
0x00 Redis简介 Redis是一款开源的.高性能的键-值存储(key-value store).它常被称作是一款数据结构服务器(data structure server). Redis的键值可以包括字符串(strings)类型,同时它还包括哈希(hashes).列表(lists).集合(sets)和 有序集合(sorted sets)等数据类型. 对于这些数据类型,你可以执行原子操作.例如:对字符串进行附加操作(append):递增哈希中的值:向列表中增加元素:计算集合的交集.并集与差…
1. Redis事务 Redis中的事务(transaction)是一组命令的集合,一个事务中的命令要么都执行,要么都不执行.事务的原理是先将属于一个事务的命令发送给Redis,然后再让Redis依次执行这些命令. > multi OK > sadd user::following QUEUED > sadd user::followers QUEUED > EXEC ) (integer) ) (integer) multi命令告诉redis,发送的sadd命令属于同一个事务,先…
1. Redis的特性 (1) 存储结构 Redis(Remote Dictionary Server,远程字典服务器)是以字典结构存储数据,并允许其他应用通过TCP协议读写字典中的内容.Redis支持的数据类型有字符串类型,散列类型,列表类型,集合类型,有序集合类型. 常见的MySQL等存储结构可能会使用额外的表来连接两个表,查询时需将该额外的表进行连接,并不直观.而Redis可以将程序中的数据直接映射到Redis中,数据在Redis中 的存储形式和其在程序中存储方式很相似.Redis的另一优…
redis简介 Redis是一个开源的,高性能的,基于键值对的缓存与存储系统,通过设置各种键值数据类型来适应不同场景下的缓存与存储需求.同事redis的诸多高层级功能使其可以胜任消息队列,任务队列等不同角色. 存储结构 Redis是REmote Dictionary Server(远程字典服务器)的缩写,它以字典结构存储数据,并允许其他应用通过TCP协议读写字典中的内容,目前为止redis支持的键值数据类型如下:字符串类型,散列类型,列表类型,集合类型,和有序集合类型.其中一个字符串类型键值允许…
Redis Redis将其数据库完全保存在内存中,仅使用磁盘进行持久化. 与其它键值数据存储相比,Redis有一组相对丰富的数据类型. Redis可以将数据复制到任意数量的从机中 Redis的安装 官网只提供了linux的安装包,我win10 的系统,在github上下载的windows安装包 3.0.504最新稳定版的 github地址:https://github.com/MicrosoftArchive/redis/releases   官网下载地址:https://redis.io/do…
一. 引言 <Redis设计与实现>一书主要分为四个部分,其中第一个部分主要讲的是Redis的底层数据结构与对象的相关知识. Redis是一种基于C语言编写的非关系型数据库,它的五种基本对象类型分别为:STRING,LIST,SET,HASH,ZSET.然而,对于每一种基本对象数据类型,底层都至少有2种不同的实现方式. 二. 简单动态字符串(Simple Dynamic String, SDS) SDS是Redis的默认字符串表示,包含字符串值的键值对底层都是由SDS实现的.除了保存数据库中的…
一.介绍 Redis有序集合和集合一样都是string类型元素的机会,且不允许重复的成员. 不同的是每个元素都会关联一个double类型的分数.Redis正是通过分数来为集合中的成员进行从小到放大的排序. 有序集合的成员是唯一的,但是分数(score)却可以重复. 集合是通过哈希表实现的,所以添加.删除.查找的复杂度都是O(1).集合中最大的成员数为4294967295,每个集合可存储40多亿个成员. 基本命令: 添加/更新 zadd key score1 member1 [score2 mem…
一.介绍 Redis的Set是string类型的无序集合.集合成员是唯一的,这就意味着集合中不能出现重复的数据. Redis中集合是通过哈希表实现的,所以添加.删除.查找的复杂度都是O(1). 集合中最大的成员数为 (4294967295, 每个集合可存储40多亿个成员). 基本命令: 增加/更新 sadd key member1 [member2 ...]   (向集合添加一个或多个成员) 查询 scard key  (获取集合的成员数) smembers key  (返回集合中的所有成员)…
一.介绍 Redis hash是一个string类型的field和value的映射表,hash特别设于用于存储对象. Redis中每个hash可以存储232 - 1 键值对(40多亿). 基本命令: 添加/更新: hset key field value  (将hash表key中的字段field的值设为value) hsetnv key field value  (只有在字段field不存在时,设置hash表字段的值) hmset key field1 value1 [field2 value2…
一.介绍 Redis列表(List)是简单的字符串列表,按照插入顺序排序.你可以添加一个元素到列表的头部(left)或者尾部(right),一个列表最多可以包含232-1个元素(4294967295,每个列表超过40亿个元素). 基本命令: blpop key [key2 ...] timeout(移除并获取列表的第一个元素,如果列表没有元素会阻塞列表知道等待超时或者发现可弹出元素为止) brpop key [key2 ...] timeout(移除并获取列表最后一个元素,同上) brpoplp…
一.介绍 String类型,是二进制安全的,存入和获取的数据相同,value最多可以容纳的数据长度是512M,可以存放json数据,图像数据等等. 存储String常用命令: 赋值(set) 取值(get) 删除(del) 数据增减(incr.decr) 扩展命令(incrby.decrby) 追加字符串(append) 获取字符串长度(strlen) 字符串替换指定位置的值(setrange) 截取字符串(getrange) 批量获取值(mget) 设置一个或多个key-value(mset)…
总结了一些redis五种存储类型的常用命令以及一些通用操作命令,不是很全,是在学习的时候将学到的做了个汇总,使用的时候可以查一下. 笔记写在表格里面了,不好粘贴.......后面的直接截图了.............      1.String类型 set key value 设置键值对 get key 根据key取得value getset key value 先获取key的value,再重新设置这个key的value del key 根据key删除这个键值对 incr key 将key对应的…
1. 集合类型 集合类型与列表类型有很多相似之处,但二者的区别在于:前者具有唯一性,但不具有有序性:后者具有有序性,但不具有唯一性.集合类型的常用操作是向集合中加入或删除元素.判断某个元素是否存在等,以及多个集合类型之间进行并集.交集和差集运算. (1) 命令 1) 增加/删除元素 格式为:SADD key member [member ...] SREM key member [member ...] SADD向集合中增加一个或多个元素,加入的元素若已存在语集合中,则会忽略该元素.命令返回成功…
回到目录 对于多WEB的环境现在已经是必须的了,很难想像一台WEB服务器面对百万并发的响应,所以,我们需要多台WEB服务器集群合作,来缓解这种高并发,高吞吐的场景,而对于多WEB的场景又会有个问题出现,即session存储的问题,如一个用户登陆后,把一个状态信息存储到当前WEB服务器的session里,而你请求其它页面时,很可能就被路由到另一台服务器了,这时,session也就丢了,而对于这种情况,有人把redis这个存储中间件想了起来,对它进行了封装,就有了今天基于redis的session共…
1. 基础命令 (1) 获取符合规则的键名列表 格式为:KEYS pattern 其中pattern表示支持通配符 # 建立一个名为bar的键 > SET bar OK # 获取Redis所有键 > KEYS * ) "bar" 注意:KEYS命令需要遍历Redis中所有键,因此当键的数量较多时会影响性能. (2) 判断一个键是否存在 格式为:EXISTS key 如果存在则返回1,否则返回0. > EXISTS bar (integer) > EXISTS n…
ConnectionMultiplexer ConnectionMultiplexer 是StackExchange.Redis的核心对象,用这个类的实例来进行Redis的一系列操作,对于一个整个应用程序应该只有一个ConnectionMultiplexer 类的实例.上一章中StackExchangeRedisHelper 的相关代码如下 private static ConnectionMultiplexer _instance = null; /// <summary> /// 使用一个…
类型与编码: typedef struct redisObject {                unsigned type:4://类型               unsigned encoding:4;//编码               void *ptr;//指向底层实现数据结构的指针 } robj; 1.字符串对象 编码: int,整数值,而且这个整数值可以用long类型来表示 raw,字符串值,而且字符串值的长度大于32字节,SDS的内存与redisObject内存不连续 em…
回到占占推荐博客索引 百度百科 redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(sorted set --有序集合)和hashs(哈希类型).这些数据类型都 支持push/pop.add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的.在此基础上,redis支持各种不同方式的排 序.与memcached一样,为了保证效率,数据都是缓存在内存中.…
在Redis中直接启动redis-server服务时, 采用的是默认的配置文件.采用redis-server   xxx.conf 这样的方式可以按照指定的配置文件来运行Redis服务.按照本Redis学习笔记中Redis的按照方式按照后,Redis的配置文件是/etc/redis/6379.conf.下面是Redis2.8.9的配置文件各项的中文解释. #daemonize no 默认情况下, redis 不是在后台运行的,如果需要在后台运行,把该项的值更改为 yes daemonize ye…
在Redis中直接启动redis-server服务时, 採用的是默认的配置文件.採用redis-server   xxx.conf 这种方式能够依照指定的配置文件来执行Redis服务. 依照本Redis学习笔记中Redis的依照方式依照后,Redis的配置文件是/etc/redis/6379.conf.以下是Redis2.8.9的配置文件各项的中文解释. #daemonize no 默认情况下, redis 不是在后台运行的.假设须要在后台运行,把该项的值更改为 yes daemonize ye…
1. String(SDS) Redis使用自定义的一种字符串结构SDS来作为字符串的表示. 127.0.0.1:6379> set name liushijie OK 在如上操作中,name(key)和liushijie(key)就存储在SDS中. SDS数据结构如下: struct sdshdr { // 所保存字符串的长度 int len; // 未使用字节长度 int free; // 字节数组,保存字符串 char buf[]; }; SDS遵循C字符串以'\0'空字符串结尾的惯例,所…
Redis是一种nosql数据库,常被称作数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Map), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型.下面就是不同类型所对应的常见redis命令: 一.在哪里敲命令? 1.我们可以在redis-cli.exe中敲这些命令. 2.上篇博客Redis学习笔记(2)——Redis的下载安装部署,我们介绍了一个工具Redis-Desktop-Manager,我们可以在该工具的控制台敲命令. 二…
一.Redis是什么? Remote Dictionary Server(Redis) 是一个开源的使用ANSI C语言编写.遵守BSD协议.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库(NO-SQL数据库),并提供多种语言的API. 它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Map), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型. 二.Redis特点 1.Redis支持数据的持久化,Red…
Redis 支持五种数据类型:string(字符串).list(列表).hash(哈希).set(集合)和 zset(有序集合),接下来我们讲解分别讲解一下这五种类型的的使用. String(字符串) string 类型是 redis 最基本的类型,很多人说如果去除本地持久化,只使用 string 的话,那 redis 就是一个 memcached.string 类型,一个 key 对应一个 value,一个 value 最大能存储512MB的数据.string 类型是二进制安全的,这也意味着…
上次写redis的学习笔记还是2014年,一转眼已经快2年过去了,在段时间里,redis最大的变化之一就是cluster功能的正式发布,以前要搞redis集群,得借助一致性hash来自己搞sharding,现在方便多了,直接上cluster功能就行了,而且还支持节点动态添加.HA.节点增减后缓存重新分布(resharding). 下面是参考官方教程cluster-tutorial 在mac机上搭建cluster的过程: 一.下载最新版redis 编译 目前最新版是3.0.7,下载地址:http:…
redis是一个cs模式的tcp server,使用和http类似的请求响应协议.一个client可以通过一个socket连接发起多个请求命令.每个请求命令发出后client通常会阻塞并等待redis服务处理,redis处理完后请求命令后会将结果通过响应报文返回给client.基本的通信过程如下: Client: INCR X Server: 1 Client: INCR X Server: 2 Client: INCR X Server: 3 Client: INCR X Server: 4…
Redis学习笔记之ABC Redis命令速查 官方帮助文档 中文版本1 中文版本2(反应速度比较慢) 基本操作 字符串操作 set key value get key 哈希 HMSET user:1 username liushijie password arrray7 HGETALL user:1l 列表(Redis只有字符串列表) lpush mylist liushijie lrange mylist 0 10 集合无序.value不会重复 sadd mylist liushijie s…
redis 学习笔记(1)-编译.启动.停止   一.下载.编译 redis是以源码方式发行的,先下载源码,然后在linux下编译 1.1 http://www.redis.io/download 先到这里下载Stable稳定版,目前最新版本是2.8.17 1.2 上传到linux,然后运行以下命令解压 tar xzf redis-2.8.17.tar.gz 1.3 编译 cd redis-2.8.17make 注:make命令需要linux上安装gcc,若机器上未安装gcc,redhat环境下…