Redis的初级认识与应用

  所谓Redis就是一个开源的key—value型数据库,支持string、list、set、zset和hash类型数据。对这些数据的操作都是原子的,redus为了保证效率会定期持久化数据。
1.使用场景
(1)数据高并发的读写
(2)海量数据的读写
(3)对扩展性要求高的数据
(4)利用list的自然时间排序存储最新n个数据

2.优点
(1)数据结构简单,关联性低
(2)数据扩展性不高
(3)对数据量大的数据处理快
3.redis的基本应用
(1)windows安装较简单
(2)Linux上的安装,具体百度。此处只说注意事项。Linux系统安装,可以通过
自带镜像包安装,即是yum install redis的方式,最保险的方式便是远程通过官
网下载文件的方式安装,即是weget 的方式。然后解压到安装目录,设置开机启动。
不设置开机启动的话每次都需要在src目录下输入redis-server才能启动,反之在任何目录都能启动。
启动成功便可以输入redis-client进行一些redis的基本应用操作。
4.redis的深层此认识
String
string 类型是 Redis 最基本的数据类型,string 类型的值最大能存储 512MB。

(1)Hashmap(哈希)
Redis hash 是一个 string 类型的 field 和 value 的映射表,hash 特别适合用于存储对象。
(2)  Set(集合)
zset(sorted set:有序集合)
添加元素到集合,元素在集合中存在则更新对应scorezadd key score member
(3Redis 集合命令
SADD myset "hello
SADD myset "foo"
SMEMBERS myset

1) "hello"
2) "foo"
   Redis HyperLogLog 是用来做基数统计的算法,HyperLogLog 的优点是,在输入元素的数量或者体积非常非常大时,
计算基数所需的空间总是固定 的、并且是很小的。在 Redis 里面,每个 HyperLogLog 键只需要花费 12 KB 内存,就
可以计算接近 2^64 个不同元素的基 数。这和计算基数时,元素越多耗费内存就越多的集合形成鲜明对比。
Redis 管道技术
Redis是一种基于客户端-服务端模型以及请求/响应协议的TCP服务。这意味着通常情况下一个请求会遵循以下步骤:
   客户端向服务端发送一个查询请求,并监听Socket返回,通常是以阻塞模式,等待服务端响应。
   服务端处理命令,并将结果返回给客户端。
(4)Redis 哈希(Hash)
Redis hash 是一个string类型的field和value的映射表,hash特别适合用于存储对象。
Redis 中每个 hash 可以存储 232 - 1 键值对(40多亿)如下图:

格式:类似HMSET *  HGETALL*

 命令参数

1HDEL key field1 [field2]
删除一个或多个哈希表字段
2HEXISTS key field
查看哈希表 key 中,指定的字段是否存在。
3HGET key field
获取存储在哈希表中指定字段的值。
4HGETALL key
获取在哈希表中指定 key 的所有字段和值
5HINCRBY key field increment
为哈希表 key 中的指定字段的整数值加上增量 increment 。
6HINCRBYFLOAT key field increment
为哈希表 key 中的指定字段的浮点数值加上增量 increment 。
7HKEYS key
获取所有哈希表中的字段
8HLEN key
获取哈希表中字段的数量
9HMGET key field1 [field2]
获取所有给定字段的值
10HMSET key field1 value1 [field2 value2 ]
同时将多个 field-value (域-值)对设置到哈希表 key 中。
11HSET key field value
将哈希表 key 中的字段 field 的值设为 value 。
12HSETNX key field value
只有在字段 field 不存在时,设置哈希表字段的值。
13HVALS key
获取哈希表中所有值
14HSCAN key cursor [MATCH pattern] [COUNT count]
迭代哈希表中的键值对。

(5)Redis 列表(List)

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

一个列表最多可以包含 232 - 1 个元素 (4294967295, 每个列表超过40亿个元素)。

关键字:LPUSH  LRANGE

Redis 有序集合(sorted set)

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

不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。

有序集合的成员是唯一的,但分数(score)却可以重复。

集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。 集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)。

redis 127.0.0.1:6379> ZADD runoobkey 1 redis
(integer) 1
redis 127.0.0.1:6379> ZADD runoobkey 2 mongodb
(integer) 1
redis 127.0.0.1:6379> ZADD runoobkey 3 mysql
(integer) 1
redis 127.0.0.1:6379> ZADD runoobkey 3 mysql
(integer) 0
redis 127.0.0.1:6379> ZADD runoobkey 4 mysql
(integer) 0
redis 127.0.0.1:6379> ZRANGE runoobkey 0 10 WITHSCORES

1) "redis"
2) "1"
3) "mongodb"
4) "2"
5) "mysql"
6) "4"

 

在以上实例中我们通过命令 ZADD 向 redis 的有序集合中添加了三个值并关联上分数。

Redis 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 发布订阅

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

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

下图展示了频道 channel1 , 以及订阅这个频道的三个客户端 —— client2 、 client5 和 client1 之间的关系:

pubsub1

当有新消息通过 PUBLISH 命令发送给频道 channel1 时, 这个消息就会被发送给订阅它的三个客户端:

pubsub2

 

Redis 服务器

Redis 服务器命令主要是用于管理 redis 服务。

下表列出了 redis 服务器的相关命令:

序号命令及描述
1BGREWRITEAOF
异步执行一个 AOF(AppendOnly File) 文件重写操作
2BGSAVE
在后台异步保存当前数据库的数据到磁盘
3CLIENT KILL [ip:port] [ID client-id]
关闭客户端连接
4CLIENT LIST
获取连接到服务器的客户端连接列表
5CLIENT GETNAME
获取连接的名称
6CLIENT PAUSE timeout
在指定时间内终止运行来自客户端的命令
7CLIENT SETNAME connection-name
设置当前连接的名称
8CLUSTER SLOTS
获取集群节点的映射数组
9COMMAND
获取 Redis 命令详情数组
10COMMAND COUNT
获取 Redis 命令总数
11COMMAND GETKEYS
获取给定命令的所有键
12TIME
返回当前服务器时间
13COMMAND INFO command-name [command-name ...]
获取指定 Redis 命令描述的数组
14CONFIG GET parameter
获取指定配置参数的值
15CONFIG REWRITE
对启动 Redis 服务器时所指定的 redis.conf 配置文件进行改写
16CONFIG SET parameter value
修改 redis 配置参数,无需重启
17CONFIG RESETSTAT
重置 INFO 命令中的某些统计数据
18DBSIZE
返回当前数据库的 key 的数量
19DEBUG OBJECT key
获取 key 的调试信息
20DEBUG SEGFAULT
让 Redis 服务崩溃
21FLUSHALL
删除所有数据库的所有key
22FLUSHDB
删除当前数据库的所有key
23INFO [section]
获取 Redis 服务器的各种信息和统计数值
24LASTSAVE
返回最近一次 Redis 成功将数据保存到磁盘上的时间,以 UNIX 时间戳格式表示
25MONITOR
实时打印出 Redis 服务器接收到的命令,调试用
26ROLE
返回主从实例所属的角色
27SAVE
同步保存数据到硬盘
28SHUTDOWN [NOSAVE] [SAVE]
异步保存数据到硬盘,并关闭服务器
29SLAVEOF host port
将当前服务器转变为指定服务器的从属服务器(slave server)
30SLOWLOG subcommand [argument]
管理 redis 的慢日志
31SYNC
用于复制功能(replication)的内部命令

例子:关闭redis客户端

redis 127.0.0.1:6379> CLIENT KILL ip:port

 

以上概述为redis是初级应用概要。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值