linux:redis

查询: 链接

redis初了解

是一个 “开源、免费” 的高性能的 key - value 的数据库

安装

yum添加epel源

yum install epel-release

参考:链接

EPEL是什么?

EPEL (Extra Packages for Enterprise Linux)是基于Fedora的一个项目,为“红帽系”的操作系统提供额外的软件包,适用于RHEL、CentOS和Scientific Linux.

1、使用:

首先需要安装一个叫” epel-release ”的软件包,这个软件包会自动配置yum的软件仓库。当然你也可以不安装这个包,自己配置软件仓库也是一样的。

#用于RHEL5系列 

wget http://download.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm
rpm -ivh epel-release-5-4.noarch.rpm

#用于RHEL6系列

wget http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-5.noarch.rpm
rpm -ivh epel-release-6-5.noarch.rpm

yum安装redis

yum install redis

Redis 服务端配置 

vim  /etc/redis.conf

修改以守护进程方式启动:

找到redis.conf 并修改 daemonize no 为 daemonize yes

 

开启客户端要确保服务端启动

redis-server /etc/redis.conf

查看版本

redis-server -v  /etc/redis.conf

打开终端

redis-cli

以上命令将打开以下终端:

redis 127.0.0.1:6379>

127.0.0.1 是本机 IP ,6379 是 redis 服务端口。现在我们输入 PING 命令。

redis 127.0.0.1:6379> ping
PONG

以上说明我们已经成功安装了redis。

设置redis开机自启动

chkconfig --add redis

chkconfig redis on   开启开机启动

chkconfig redis off   关闭开机启动

打开redis命令:service redis start

关闭redis命令:service redis stop

重启redis命令:service redis restart

配置

配置文件:/etc/redis.conf

可以通过 CONFIG 命令查看或设置配置项

CONFIG GET loglevel

使用 * 号获取所有配置项 

CONFIG GET *

可以通过修改 redis.conf 文件或使用 CONFIG set 命令来修改配置 

语法:

CONFIG SET CONFIG_SETTING_NAME NEW_CONFIG_VALUE

redis.conf 配置项说明

数据类型

参考:链接

Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。

String(字符串)

参考:链接

一个 key 对应一个 value

string 可以包含任何数据。比如jpg图片或者序列化的对象

string 类型的值最大能存储 512MB

以上实例中我们使用了 Redis 的 SET 和 GET 命令。键为 aaa,对应的值为 hello world!

Hash(哈希)

参考:链接

Redis hash 是一个键值 (key=>value) 对集合,是一个 string 类型的 field 和 value 的映射表,hash 特别适合用于存储对象

#删除aaa对象 
del aaa   

HMSET aaa s1 "hello" s2 "world"

HGET aaa s1

HGET aaa s2

这里使用了 Redis HMSET, HGET 命令,HMSET 设置了两个 field=>value 对, HGET 获取对应 field 对应的 value

每个 hash 可以存储 232 -1 键值对(40多亿)

List(列表)

参考:链接

Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。

列表最多可存储 232 - 1 元素 (4294967295, 每个列表可存储40多亿)。

Set(集合)

参考:链接

Redis 的 Set 是 string 类型的无序集合

集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。

注意:以上实例中 c++添加了两次,但根据集合内元素的唯一性,第二次插入的元素将被忽略。

集合中最大的成员数为 232 - 1(4294967295, 每个集合可存储40多亿个成员)。

这里用到了:

sadd :添加一个 string 元素到 key 对应的 set 集合中,成功返回 1,如果元素已经在集合中返回 0

语法:

sadd key member

zset(sorted set:有序集合)

参考:链接1    链接2

Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。

不同的是将Set中的元素增加一个权重参数score,元素按score有序排序

zset的成员是唯一的,但分数(score)却可以重复。

注意:这里用到了 zadd:添加元素到集合,元素在集合中存在则更新对应score

        zrangebyscore : 获取分数范围内的值

语法:

zadd key score member

zrangebyscore  key  score1 score2

redis命令

Redis 命令用于在 redis 服务上执行操作,要在 redis 服务上执行命令需要一个 redis 客户端

先开启服务,

redis-server /etc/redis.conf

后启动客户端:

打开终端并输入命令 redis-cli该命令会连接本地的 redis 服务

在远程服务上执行命令:

语法:

redis-cli -h host -p port -a password

若出现乱码:

redis-cli --raw

键(key)

Redis 键命令用于管理 redis 的键

参考:链接

HyperLogLog

参考:链接

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

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

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

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

基数

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

 

发布订阅

参考:链接

Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息

Redis 客户端可以订阅任意数量的频道。

原理:

事务

参考链接

Redis 事务可以一次执行多个命令, 并且带有以下三个重要的保证:

  • 批量操作在发送 EXEC 命令前被放入队列缓存。
  • 收到 EXEC 命令后进入事务执行,事务中任意命令执行失败,其余的命令依然被执行。【不具有原子性】
  • 在事务执行过程,其他客户端提交的命令请求不会插入到事务执行命令序列中。

一个事务从开始到执行会经历以下三个阶段:

  • 开始事务。
  • 命令入队。
  • 执行事务。

posted @ 2020-06-20 00:11  PamShao  阅读(145)  评论(0编辑  收藏  举报