redis之(二十)redis的总结一
1 什么是Redis
Redis(REmote DIctionary Server,远程数据字典服务器)是开源的内存数据库,常用作缓存或者消息队列。
Redis的特点:
- Redis存在于内存,使用硬盘作为持久化;每秒十万读写。
- 具有丰富的数据结构,字符串、哈希表、列表、集合、有序集合;提供交集、并集、差集等操作。
- 设置TTL存活时间,到期自动删除。
- Redis单线程、Memcached多线程;对于一般的应用场景,单线程也足够使用,优势还是在于多数据类型、持久化。
- 可以将数据复制到任意数量的从服务器。
2 Redis中的数据结构
字符串
- SET keyname value 设置键值keyname的值是value
- KEYS * 获取所有的键值
- GET keyname 获取keyname的值
- EXISTS keyname 判断是否存在键值keyname
- DEL keyname 删除键值keyname
- TYPE keyname 判断keyname的类型(string字符串,hash哈希表,list列表,set集合,zset有序集合)
哈希表
- HSET keyname key value 添加一个哈希属性和值
- HGET keyname key 获取值
- HKEYS keyname 获取全部的key值
- HVALS keyname 获取全部的value值
- HGETALL keyname 获取所有的值
列表
通过双向链表实现,头尾操作均为O(1),获取指定元素比较慢。
- LPUSH keyname value1或者LPUSH keyname value1 value2 在左边插入
- RPUSH keyname value2 在右边插入
- LRANGE keyname 0 -1 查询所有的元素
- LPOP keyname
- RPOP keyname
集合
元素唯一,但是没有顺序。使用值为空的哈希表实现,操作都是O(1)。
- SADD keyname value1 value2 添加值
- SREM keyname value1 删除
- SMEMBERS keyname查询所有元素
有序集合
使用哈希和跳跃表实现,中间速度也很快。
- ZADD keyname key value 添加
- ZRANGE keyname start end 获取指定范围的元素
与列表的比较:
相同:
- 都是有序的
- 都可以获取某一范围的元素
不同:
- 列表通过双向链表实现,两端数据存取极快,中间缓慢
- 有序集合通过哈希和跳跃表实现,中间速度也很快,为O(log(N))
- 列表不能简单地调整某个元素的位置,有序集合可以
- 有序集合比列表更好费内存
3 Redis持久化
Redis提供了两种持久化方式:1 RDB快照方式 2 AOF方式
RDB方式:
满足一定条件时,会创建一个子进程,复制当前的数据,把数据写入到硬盘中某个文件,写入完成后替换原来的存储文件。数据一般存储在dump.rdb中。UNIX系统中支持写时复制,即刚开始会执行持久化写入磁盘的操作,如果此时有其他的数据发生改变,就复制一份数据执行。
除了这种自动的快照方式,还支持命令方式持久化:
- SAVE:通过阻塞的方式,用父进程来持久化,此时无法执行其他的请求。
- BGSAVE:通过fork子进程的方式,持久化。
AOF方式:
每次操作都会记录命令,这样会造成某些命令的冗余,比如添加了一个属性,再删除,那么这两个操作都是冗余的。redis提供了一些优化,所以可以避免这些冗余信息。命令记录在appendonly.aof中
4 Redis的消息队列
Redis用于消息队列,通常有两种种使用方式:
LIST:基于列表的方式,所有的消费者数据加起来是列表中的所有数据.
发布/订阅:每个消费者订阅独立的channel,每个数据都是独立的。
redis之(二十)redis的总结一的更多相关文章
- SpringBoot开发二十-Redis入门以及Spring整合Redis
安装 Redis,熟悉 Redis 的命令以及整合Redis,在Spring 中使用Redis. 代码实现 Redis 内置了 16 个库,索引是 0-15 ,默认选择第 0 个 Redis 的常用命 ...
- redis(二)redis的主从模式和集群模式
redis(二)redis的主从模式和集群模式 主从模式 集群模式 主从模式 redis的主从模式,指的是针对多台redis实例时候,只存在一台主服务器master,提供读写的功能,同时存在依附在这台 ...
- Redis进阶实践之二十 Redis的配置文件使用详解
一.引言 写完上一篇有关redis使用lua脚本的文章,就有意结束Redis这个系列的文章了,当然了,这里的结束只是我这个系列的结束,但是要学的东西还有很多.但是,好多天过去了,总是感觉好像还缺点什么 ...
- redis(二十二):Redis 集群(proxy 型)一
redis伪集群搭建 搭建环境是vmware虚拟机+ubuntu-14.04,以redis伪集群的方式搭建搭建,一共实现了6台机器集群的搭建,三个master节点和三个slave节点. <pre ...
- redis(二)Redis适用场景,如何正确的使用
网络IO模型 Memcached是多线程,非阻塞IO复用的网络模型,分为监听主线程和worker子线程,监听线程监听网络连接,接受请求后,将连接描述字pipe 传递给worker线程,进行读写IO, ...
- Redis学习二:Redis入门介绍
一.入门概述 1.是什么 Redis:REmote DIctionary Server(远程字典服务器) 是完全开源免费的,用C语言编写的,遵守BSD协议,是一个高性能的(key/value)分布式内 ...
- 【Redis】二、Redis高级特性
(三) Redis高级特性 前面我们介绍了Redis的五种基本的数据类型,灵活运用这五种数据类型是使用Redis的基础,除此之外,Redis还有一些特性,掌握这些特性能对Redis有进一步的了解, ...
- Redis探索之路(二):Redis在linux下的安装
目前最新稳定版本为:2.4.17.tar.gz .redis-2.6.10.tar.gz wget http://redis.googlecode.com/files/redis-2.4.17.tar ...
- Redis系列(二):Redis的5种数据结构及其常用命令
上一篇博客,我们讲解了什么是Redis以及在Windows和Linux环境下安装Redis的方法, 没看过的同学可以点击以下链接查看: Redis系列(一):Redis简介及环境安装. 本篇博客我们来 ...
- redis(二):Redis 命令
Redis 命令用于在 redis 服务上执行操作. 要在 redis 服务上执行命令需要一个 redis 客户端.Redis 客户端在我们之前下载的的 redis 的安装包中. 语法 Redis 客 ...
随机推荐
- Codeforces 854C Planning(贪心+堆)
贪心:让代价大的尽量移到靠前的位置. 做法:先让前k个数加进堆里,枚举k+1~n+k,每次把新元素加进堆后找到最大代价放在当前位置即可. #include<bits/stdc++.h> # ...
- 用camke编译python程序
project(test) cmake_minimum_required(VERSION 3.0) find_package(OpenCV REQUIRED) find_package (Python ...
- Eclipse的Project Facets属性设置解决项目无故报错
新检出项目,发现代码无故报错,各种尝试,最终发现是因为 项目右键中的 project Facets 属性中的 java 后面的 version 版本和项目 build path 的 jdk 版本不一 ...
- JQuery学习一
第一个JQuery程序 <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <he ...
- HDU3376 最小费用最大流 模板2
Matrix Again Time Limit: 5000/2000 MS (Java/Others) Memory Limit: 102400/102400 K (Java/Others)To ...
- jsoup select 选择器
转载自:http://blog.csdn.net/zhejingyuan/article/details/11801027 方法 利用方法:Element.select(String selector ...
- windows版本redis下载安装
官方网站:http://redis.io/ 官方下载:http://redis.io/download 可以根据需要下载不同版本 在官方下载网页中有一个window版本的说明,说redis官方没有wi ...
- 转:为什么在定义hashcode时要使用31这个数呢?
散列计算就是计算元素应该放在数组的哪个元素里.准确的说是放到哪个链表里面.按照Java的规则,如果你要想将一个对象放入HashMap中,你的对象的类必须提供hashcode方法,返回一个整数值.比如S ...
- python读文件和写入文件复习
with open("name.txt",'r') as read_file: for name in read_file: list_name = (name.split(',' ...
- 【BZOJ】1702: [Usaco2007 Mar]Gold Balanced Lineup 平衡的队列
[题意]给定n头牛,k个特色,给出每头牛拥有哪些特色的二进制对应数字,[i,j]平衡当且仅当第i~j头牛的所有特色数量都相等,求最长区间长度. [算法]平衡树+数学转化 [题解]统计前缀和sum[i] ...