一起重新开始学大数据-hadoop先导篇-Day41-Redis安装及基本命令 |
科普环节
Redis是什么?
-
开源的(BSD协议),使用ANSI C 编写,基于内存的且支持持久化,高性能的Key-Value的NoSQL数据库
-
支持数据结构类型丰富,有如 字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 与范围- 查询, bitmaps, hyperloglogs 和 地理空间(geospatial) 索引半径查询。
-
丰富的支持主流语言的客户端,C、C++、Python、Erlang、R、C#、Java、PHP、Objective-C、Perl、Ruby、Scala、Go、JavaScript
-
用途:缓存(StackOverFlow)、数据库(微博)、消息中间件(微博)
-
官方网站: http://www.redis.io
SQL分类
sql排名
👉👉👉👉sql排行链接
Redis数据模型
Key
-
Redis key 值是二进制安全的,这意味着可以用任何二进制序列作为key值,从形如”foo”的简单字符串到一个JPEG文件的内容都可以。空字符串也是有效key值
-
Key取值原则
键值不需要太长,消耗内存,且在数据中查找这类
键值的计算成本较高
键值不宜过短,可读性较差
默认数据类型为String
-
字符串是一种最基本的Redis值类型。Redis字符串是二进制安全的,这意味着一个Redis字符串能包含任意类型的数据
- 例如: 一张JPEG格式的图片或者一个序列化的Ruby对象
-
一个字符串类型的值最多能存储512M字节的内容
安装
Redis单节点安装
配置阿里云yum源(下载相对国外快点)
下载配置文件
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
生成缓存
yum makecache
安装redis
1、安装依赖
yum install -y gcc-c++ gcc tcl
2、上传压缩包并解压(通过xftp上传到/usr/local/module)
链接:https://pan.baidu.com/s/1Zl1wSsRfDAxBzUN12vn_qw
提取码:dx9c
tar -zxvf redis-3.0.0.tar.gz -C /usr/local/soft
3、编译
cd redis-3.0.0
make
# make test (make测试是否成功,可不执行)
创建安装目录
mkdir -p /usr/local/soft/redis
安装
make PREFIX=/usr/local/soft/redis install
4、复制配置文件(因为redis要基于redis.conf文件才能运行)
cp /usr/local/soft/redis-3.0.0/redis.conf /usr/local/soft/redis/bin/
配置环境变量
vim /etc/profile
增加
export REDIS_HOME=/usr/local/soft/redis/
在PATH后面增加(两个变量之间用冒号隔开) :$REDIS_HOME/bin
使环境变量生效
source /etc/profile
5、启动redis
启动方法①后台启动(要在redis的bin目录下执行,因为需要基于redis.conf文件)
cd /usr/local/soft/redis/bin
nohup redis-server redis.conf &
启动方法②(要在redis的bin目录下执行,因为需要基于redis.conf文件)
cd /usr/local/soft/redis/bin
redis-server redis.conf
如果要关闭redis
ps -aux | grep redis
kill -9 redis服务的PID值
6、连接redis
redis-cli
实践操作
命令
帮助命令
Help
Help <'tab >
Help set
Help @string
String类型基本命令
SET命令
使用help set帮助文档查看
设置字符串值
SET key value [EX seconds] [PX milliseconds] [NX|XX]
EX设置过期时间,秒,等同于SETEX key seconds value
PX 设置过期时间,毫秒,等同于PSETEX key milliseconds value
NX 键不存在,才能设置,等同于SETNX key value
XX 键存在时,才能设置
设置多个键的字符串值
MSET key value [key value …]
键不存在时,设置字符串值
MSETNX key value [key value …]
注意:这是原子操作
时间
过期
Redis中可以给Key设置一个生存时间(秒或毫秒),当达到这个时长后,这些键值将会被自动删除
设置多少秒或者毫秒后过期
EXPIRE key seconds
PEXPIRE key milliseconds
设置在指定Unix时间戳过期
EXPIREAT key timestamp
PEXPIREAT key milliseconds-timestamp
删除过期
PERSIST key
生存时间
Time To Live
,Key的剩余生存时间
查看剩余生存时间
TTL key
PTTL key
key存在但没有设置TTL,返回-1
key存在,但还在生存期内,返回剩余的秒或者毫秒
key曾经存在,但已经消亡,返回-2(2.8版本之前返回-1)
键值
-
查找键
KEYS pattern
-
pattern取值
*
任意长度字符?
任意一个字符[]
字符集合,表示可以是集合中的任意一个
-
键类型
TYPE key
-
键是否存在
EXISTS key
-
键重命名
RENAME key newkey
RENAMENX key newkey
-
键删除
DEL key [key ...]
-
获取值
GET key
-
获取多个给定的键的值
MGET key [key ...]
-
返回旧值并设置新值
GETSET key value
- 如果键不存在,就创建并赋值
-
字符串长度
STRLEN key
-
追加字符串
APPEND key value
- 如果键存在就追加;如果不存在就等同于SET key value
-
获取子字符串
GETRANGE key start end
- 索引值从0开始,负数表示从字符串右边向左数起,-1表示最有一个字符
-
覆盖字符串
SETRANGE key offset value
步增
- 步长1的增减
INCR key
DECR key
- 字符串值会被解释成64位有符号的十进制整数来操作,结果依然转成字符串
- 步长增减
INCRBY key decrement
DECR key decrement
- 字符串值会被解释成64位有符号的十进制整数来操作,结果依然转成字符串
bit
-
位图bitmap
- 位图不是真正的数据类型,它是定义在字符串类型中
- 一个字符串类型的值最多能存储512M字节的内容
- 位上限:2(9+10+10+3)=232b
-
设置某一位上的值
-
SETBIT key offset value
-
offset偏移量,从0开始
-
value不写,默认是0
-
-
获取某一位上的值
GETBIT key offset
-
返回指定值0或者1在指定区间上第一次出现的位置
BITPOS key bit [start] [end]
-
位操作
-
对一个或多个保存二进制位的字符串 key 进行位元操作,并将结果保存到 dteskey 上
-
operation 可以是 AND 、 OR 、 NOT 、 XOR 这四种操作中的任意一种
-
BITOP AND destkey key [key …] ,对一个或多个 key 求逻辑并,并将结果保存到 destkey
-
BITOP OR destkey key [key …] ,对一个或多个 key 求逻辑或,并将结果保存到 destkey
-
BITOP XOR destkey key [key …] ,对一个或多个 key 求逻辑异或,并将结果保存到 destkey
-
BITOP NOT destkey key ,对给定 key 求逻辑非,并将结果保存到 destkey
-
除了 NOT 操作之外,其他操作都可以接受一个或多个 key 作为输入
-
当 BITOP 处理不同长度的字符串时,较短的那个字符串所缺少的部分会被看作 0
-
空的 key 也被看作是包含 0 的字符串序列
-
-
统计指定位区间上值为1的个数
-
BITCOUNT key [start] [end]
-
从左向右从0开始,从右向左从-1开始,注意官方start、end是位,测试后是字节
-
BITCOUNT testkey 0 0表示从索引为0个字节到索引为0个字节,就是第一个字节的统计
-
BITCOUNT testkey 0 -1等同于BITCOUNT testkey
-
最常用的就是 BITCOUNT testkey
-
库操作
-
登录不同的库
redis-cli --help
redis-cli -n 2
-
清除当前库数据
FLUSHDB
-
清除所有库中的数据
FLUSHALL
案例
①网站用户的上线次数统计(活跃用户)
用户ID为key,天作为offset,上线置为1
ID为500的用户,今年的第1天上线、第30天上线
SETBIT u500 1 1
SETBIT u500 30 1
BITCOUNT u500
KYES u*
②按天统计网站活跃用户
天作为key,用户ID为offset,上线置为1
求一段时间内活跃用户数
SETBIT 20160602 15 1
SETBIT 20160601 123 1
SETBIT 20160606 123 1
求6月1日到6月10日的活跃用户
BITOP OR 20160601-10 20160601 20160602 20160603 20160610
BITCOUNT 20160601-10
结果为2
|
|
|
|
上一章-hadoop先导篇-Day40-初识Springboot
下一章-hadoop先导篇-Day42-Redis的列表、散列、set集合、Sorted和Redis持久化
|
|
|
|
|
听说长按大拇指👍会发生神奇的事情呢!好像是下面的画面,听说点过的人🧑一个月内就找到了对象的💑💑💑,并且还中了大奖💴$$$,考试直接拿满分💯,颜值突然就提升了😎,虽然对你好像也不需要,是吧,吴彦祖🤵! |