Redis——学习之路大器晚成(初识redis)

【Redis】4、Redis学习资料,redis学习资料

Redis 集群规范

在接下来的一段时间里面我要将自己学习的redis整理一遍,下面是我整理的一些资料:

Redis 简介

Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。
Redis 与其他 key – value 缓存产品有以下三个特点:
Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
Redis支持数据的备份,即master-slave模式的数据备份。

 

Redis 集群规范

Redis 集群教程

  Redis是一款依据BSD开源协议发行的高性能Key-Value存储系统(cache and store),所以redis是可以查看源代码 。

Redis 优势

性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。
丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及
Ordered Sets 数据类型操作。
原子 –
Redis的所有操作都是原子性的,同时Redis还支持对几个操作全并后的原子性执行。
丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过期等等特性。

摘自:

Redis 集群教程

Redis中国用户组(转发)|优酷土豆的Redis服务平台化之路

它是通常被称为数据结构服务器,因为值(value)可以使字符串(string)、哈希(hashes)、列表(list)、集合(sets),和有序集合(sorted sets)类型。

一、安装redis

参考:
下载地址:

Redis  HyperLogLog 结构讲解

Redis 在 2.8.9 版本添加了 HyperLogLog 结构。

Redis HyperLogLog 是用来做基数统计的算法,HyperLogLog
的优点是,在输入元素的数量或者体积非常非常大时,计算基数所需的空间总是固定
的、并且是很小的。

在 Redis 里面,每个 HyperLogLog 键只需要花费 12 KB 内存,就可以计算接近
2^64 个不同元素的基
数。这和计算基数时,元素越多耗费内存就越多的集合形成鲜明对比。

但是,因为 HyperLogLog
只会根据输入元素来计算基数,而不会储存输入元素本身,所以 HyperLogLog
不能像集合那样,返回输入的各个元素。

Redis中国用户组(转发)|优酷土豆的Redis服务平台化之路

Redis
集群规范 Redis 集群教程
….

  在将redis类型以前我们先在自己的电脑上安装一下redis,打开这个链接选择2.8.2400这个版本,下载msi。msi是安装版本,zip是免安装版本。区别在于msi安装版本安装后可以以服务的形式存在。需要注意的是redis安装包没有32位系统的只有64位的

Windows安装

解压文件到E盘,并重命名为redis,运行dos,切换目录到redis下,
运行:redis-server.exe redis.windows.conf
图片 1
新打开一个窗口,切换到redis目录下并运行redis-cli.exe -h 127.0.0.1 -p
6379
设置键值对 set myKey abc
取出键值对 get myKey
图片 2

什么是基数?

比如数据集 {1, 3, 5, 7, 5, 7, 8}, 那么这个数据集的基数集为 {1, 3, 5 ,7,
8}, 基数(不重复元素)为5。
基数估计就是在误差可接受的范围内,快速计算基数。

 

图片 3

Linux安装

下载地址:,下载最新文档版本。
本教程使用的最新文档版本为 2.8.17,下载并安装:

$ 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服务.

$ cd src
$ ./redis-server

注意这种方式启动redis
使用的是默认配置。也可以通过启动参数告诉redis使用指定配置文件使用下面命令启动。

$ cd src
$ ./redis-server redis.conf

redis.conf是一个默认的配置文件。我们可以根据需要使用自己的配置文件。
启动redis服务进程后,就可以使用测试客户端程序redis-cli和redis服务交互了。
比如:

$ cd src
$ ./redis-cli
redis> set foo bar
OK
redis> get foo"bar"

Redis HyperLogLog 命令

下表列出了 redis HyperLogLog 的基本命令:

序号 命令及描述
1 PFADD key element [element …] 
添加指定元素到 HyperLogLog 中。
2 PFCOUNT key [key …] 
返回给定 HyperLogLog 的基数估算值。
3 PFMERGE destkey sourcekey [sourcekey …] 
将多个 HyperLogLog 合并为一个 HyperLogLog

 

  安装到D盘中,如下

二、配置redis

Redis 的配置文件位于 Redis 安装目录下,文件名为 redis.conf。

通过CONFIG查看命令或设置配置项。
例如:
图片 4
获取所有配置项
图片 5

修改配置
修改redis.conf 或 使用config set 命令修改配置
图片 6

配置就完成了。

Redis HyperLogLog 命令实例

以下实例演示了 HyperLogLog 的工作过程:

redis 127.0.0.1:6379> PFADD runoobkey "redis"1) 
(integer) 1
redis 127.0.0.1:6379> PFADD runoobkey "mongodb"1)
(integer) 1
redis 127.0.0.1:6379> PFADD runoobkey "mysql"1) 
(integer) 1
redis 127.0.0.1:6379> PFCOUNT runoobkey(integer) 
3

 

图片 7

  接下来再看看我们的服务有一个redis的服务,而且该服务已经启动。

图片 8

  然后我就使用(redis-cli.exe)客户端连接redis服务。连接redis服务器的命令为redis-cli.exe
-h 127.0.0.1 -p 6379 -auth 密码

  先开打运行程序输入“cmd”然后如下:

图片 9

  因为默认端口为6379所有可以不用-p
6379 ,同时刚安装默认情况下没有密码,所以不需要密码。

  然后我在命令行输入”echo “hello redis” “,如果返回”hello
redis” 说明连接成功,这样我们就完成了redis安装,也知道如何连接redis服务。

  

  下面开始简单介绍字符串(string)、哈希(hashes)、列表(list)、集合(sets),和有序集合(sorted sets)类型。

 

字符串(string)

  String类型是最常用的一种数据类型,普通的Key/value存储都可以归为此类。一个Key对应一个Value,String类型是二进制安全的。Redis的String可以包含任何数据,可以存放json数据,图像数据等等。value存储最大数据量为512M。

主要命令有

  set key value #将字符串值value关联到key

图片 10

   get key #返回key所关联的字符串值

图片 11

  decr key #将key中储存的数字值减一

  incr key #将key中存储的数字值加一

图片 12

 

哈希(hashes)

  redis
hash是一个string类型的field和value的映射表。它的添加,删除操作都是O(1)(平均)。hash特别适合用于存储对象。

在上面服务器配置文件中包含

  hash-max-zipmap-entries 64 #配置字段最多64个。

  hash-max-zipmap-value 512 #配置value最大为512字节。

主要命令有

  hset key field #将哈希表key中的域field的值设为value

图片 13  hget key field
#返回哈希表key中给定域field的值。

图片 14

以及hdel、hgetall、hkeys、hvals等

 

列表(list)

  redis的list类型其实就是一个每个子元素都是string类型的双向链表。所以[lr]push和[lr]pop命令的算法时间复杂度都是O(1),另外list会记录链表的长度。所以llen操作也是O(1).链表的最大长度是(2的32次方-1)。我们可以通过push,pop操作从链表的头部或者尾部添加删除元素。这使得list既可以用作栈,也可以用作队列。

主要命令有

  lset key index value #将列表key下标为index的元素的值设置为value。当然不可以直接使用

图片 15

  要先使用命令 lpush kye value #将一个或多个value插入到列表key的表头

图片 16

  然后我们再lpush几个值

  lrange key start stop #返回列表key中指定区间内的元素,区间以偏移量start和stop指定。
lrange listkey 0 -1 表示显示所有数据 lrange listkey 0 0
表示显示第一个元素

图片 17

以及llen、rpop、lpop等

 

集合(sets)

  redis的set是string类型的无序集合。set元素最大可以包含(2的32次方-1)个元素。set的是通过hash
table实现的,所以添加,删除,查找的复杂度都是O(1)。

主要命令有

  sadd key member
#将一个或多个member元素加入到集合key当中,已经存在于集合的member元素将被忽略。

图片 18

  smembers key #返回集合key中的所有成员。

图片 19

以及sdiff、sinter、sunion、scard等

有序集合(sorted sets)

  和set一样sorted
set也是string类型元素的集合,不同的是每个元素都会关联一个double类型的score。sorted
set的实现是skip list和hash
table的混合体当元素被添加到集合中时,一个元素到score的映射被添加到hash
table中,所以给定一个元素获取score的开销是O(1),另一个score到元素的映射被添加到skip
list并按照score排序,所以就可以有序的获取集合中的元素。添加,删除操作开销都是O(log(N))和skip
list的开销一致,redis的skip
list实现用的是双向链表,这样就可以逆序从尾部取元素。

主要命令有

  zadd key score member #将一个或多个member元素及其score值加入到有序集key当中。

图片 20

  zrange key start stop
[withscores] #返回有序集key中,指定区间内的成员。其中成员的位置按score值递增(从小到大)来排序。还有一个可选分值

图片 21

以及zcard、zcount、zrank、zrem、zscore等  

 

 

 

以上是自己个人学习的记录,如果有什么不对的地方请大家指正,欢迎评论!

相关文章