黑马程序员技术交流社区

标题: 【石家庄校区】Redis的基本使用 [打印本页]

作者: htb52110    时间: 2018-2-8 15:11
标题: 【石家庄校区】Redis的基本使用
本帖最后由 htb52110 于 2018-2-8 15:14 编辑

Redis基本使用
1. Redis是什么、特点、优势
Redis是一个开源的使用C语言编写、开源、支持网络、可基于内存亦可持久化的日志型、高性能的Key-Value数据库,并提供多种语言的API。
它通常被称为 数据结构服务器 ,因为值(value)可以是 字符串(String)、哈希(Map)、 列表(list)、集合(sets) 和 有序集合(sorted sets)等类型。
Redis 与其他 key - value 缓存产品有以下三个特点:
Redis优势
2. redis安装(Linux)、启动、退出、设置密码、远程连接
2.1 安装redis
下载redis安装包(如: redis-2.8.17.tar.gz )
tar -zxvf redis-2.8.17.tar.gzcd redis-2.8.17makesudo make install
2.2 后台启动服务端
nohup redis-server &
:redis-server默认启动端口是6379,没有密码
如果不使用默认配置文件,启动时可以加上配置文件
nohup redis-server  ~/soft/redis-2.8.17/redis.conf &
2.3 启动客户端、验证
[sql]view plaincopy
2.4 退出
关闭redis-server
redis-cli shutdown
例子
[sql]view plaincopy
:如果设置上 密码 后,单纯的redis-cli是关不掉的,必须加上ip、port、passwd
sudo redis-cli -h host -p port -a passwd shutdown
退出客户端
localhost:6379> QUIT
2.5 设立密码
打开redis.conf找到requirepass,去掉默认,修改
requirepass yourpassword
验证密码的正确性
localhost:6379> auth jihiteOK
2.6 远程连接
需要已经安装redis,可以使用redis-cli命令
redis-cli -h host -p port -a password
2.7 查看redis-server统计信息
INFO
3. Reis key
Redis是key-value的数据库,Redis的键用于管理Redis的键,基本语法是
COMMAND KEY_NAME
例子:
[sql]view plaincopy
:redis命令不区分大小写,所以get var和GET var是等价的

4. Redis数据类型
Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。
4.1 String(字符串)
例子
[sql]view plaincopy
说明:利用set给变量var赋值“String type”;利用get获得变量var的值
4.2 Hash(哈希)
例子
[sql]view plaincopy
说明
var:1是键值,每个 hash 可以存储 2 32 - 1 键值对(40多亿)
HMSET用于建立hash对象,HGETALL用于获取hash对象
4.3 LIST(列表)
例子
[sql]view plaincopy
说明
lpush往列表的前边插入;lrange后面的数字是范围(闭区间)
列表最多可存储 2 32 - 1 元素 (4294967295, 每个列表可存储40多亿)。
4.4 Set(集合)
Redis的Set是string类型的无序集合。
集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)
例子
[sql]view plaincopy
说明
set往集合中插入元素,smembers列举出集合中的元素
成功插入返回1;错误插入返回0,例子中mongodb第二次插入时,因已经存在,故插入失败。
4.5 zset(sorted sete:有序集合)
zset和set一样也是String类型的集合,且不允许元素重复
zset和set不同的地方在于zset关联一个double类型的分数,redis通过分数对集合中的元素排序
zset的元素是唯一的,但是分数是可以重复的
例子
[sql]view plaincopy
说明
成功插入返回1,否则返回0。插入已存在元素失败--返回0
分数为float(可正、负、0)
5. Redis HyperLogLog
Redis HyperLogLog是用来做基数统计的算法。优点是,在输入元素的数量或者体积非常非常大时,计算基数所需的空间总是固定的、并且是很小的。
在 Redis 里面,每个 HyperLogLog 键只需要花费 12 KB 内存,就可以计算接近 2^64 个不同元素的基 数。这和计算基数时,元素越多耗费内存就越多的集合形成鲜明对比。
:因为HyperLogLog只会根据输入元素来计算基数,而不会存储输入元素本身,因此不会返回输入的各个元素。
基数是什么? 对于["abc", "abc", "2", "3"],基数是["abc", "2", "3"],个数是3.
例子
[sql]view plaincopy
说明:
6. Redis 发布订阅
Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息。
Redis 客户端可以订阅任意数量的频道。
原理:下图展示了三个客户端client1, client2, client5订阅了频道channel1


当有新消息通过PUBLISH发送给channel1时,这时候channel1就会把消息同时发布给订阅者
例子
[sql]view plaincopy
打开几个客户端,订阅channel redisChat
[sql]view plaincopy
然后给channel redisChat发送消息“Hello World”
localhost:6379> publish redisChat "Hello World"(integer) 1
客户端会收到消息
[sql]view plaincopy
7. Redis事务
事务是一个单独的操作集合,事务中的命令有顺序,是一个原子操作(事务中的命令要么全部执行,要么全部不执行),执行一个事务中的命令时不会被其他命令打断。
一个事务从开始到结束经过以下三个阶段:
例子
[sql]view plaincopy
说明:事务以MULTI开始,以EXEC结束

转自【http://www.cnblogs.com/kaituorensheng/p/5244347.html




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2