NoSQL之Redis——从安装到使用,好好顺一顺redis基础

一、关系型数据库与非关系型数据库

关系型数据库非关系型数据库
包括Oracle 、MySQL、SQL Server、Microsoft Access、DB2 等包括Redis、MongDB、Hbase、CouhDB等
存储标准数据结构(int,float,double,char)存储类型一般为string
数据库名称可以自定义数据库名不能自定义,Redis默认(0-15)16个子数据库
存在表结构、主键、外键只有键值对
面向记录满足数据库高并发、海量数据吞吐、高可扩展性与高可用性要求

二、Redis介绍

在这里插入图片描述

  • Redis基于内存运行并支持持久化
  • 采用key-value(键值对)的存储形式
  • 优点
    具有极高的数据读写速度
    支持丰富的数据类型
    支持数据的持久化
    原子性
    支持数据备份

三、redis安装

  • 解压压缩包
    准备包redis-5.0.7.tar.gz ,直接拉进Xshell的/opt下
[root@localhost opt]# tar zxvf redis-5.0.7.tar.gz 
[root@localhost opt]# ls
redis-5.0.7  redis-5.0.7.tar.gz  rh
  • 编译安装
[root@localhost opt]# cd redis-5.0.7/
[root@localhost redis-5.0.7]# make
从上面信息可以看到各种文件所在路径
PREFIX             : /usr/local
BINDIR             : /usr/local/bin
DATADIR            : /usr/local/share
INCLUDEDIR         : /usr/local/include
LIBDIR             : /usr/local/lib
MANDIR             : /usr/local/share/man
[root@localhost redis-5.0.7]# make install

运行软件自带的配置脚本,一路回车
[root@localhost utils]# ./install_server.sh 
Welcome to the redis service installer
This script will help you easily set up a running redis server

Please select the redis port for this instance: [6379] 
Selecting default: 6379
Please select the redis config file name [/etc/redis/6379.conf] 
Selected default - /etc/redis/6379.conf
Please select the redis log file name [/var/log/redis_6379.log] 
Selected default - /var/log/redis_6379.log
Please select the data directory for this instance [/var/lib/redis/6379] 
Selected default - /var/lib/redis/6379
Please select the redis executable path [/usr/local/bin/redis-server] 
Selected config:
Port           : 6379   ####默认端口
Config file    : /etc/redis/6379.conf   ####配置文件所在位置
Log file       : /var/log/redis_6379.log   ###日志所在位置
Data dir       : /var/lib/redis/6379    ##数据目录
Executable     : /usr/local/bin/redis-server  ##执行文件路径
Cli Executable : /usr/local/bin/redis-cli			#####客户端工具
Is this ok? Then press ENTER to go on or Ctrl-C to abort.
Copied /tmp/6379.conf => /etc/init.d/redis_6379
Installing service...
Successfully added to chkconfig!
Successfully added to runlevels 345!
Starting Redis server...
Installation successful!

  • 修改配置文件
[root@localhost redis-5.0.7]vim/etc/redis/6379.conf
:set nu 查看行号,在下面对应行去掉注释,或者进行修改
70 bind 127.0.0.1 20.0.0.23      ##加上本机Ip,监听20.0.0.23和环回口
93 port 6379   ##端口
137 daemonize yes   ##启用守护进程
159 pidfile /var/run/redis_6379.pid   ##指定PID文件
167 loglevel notice        ###日志级别为notice
172 logfile /var/log/redis_6379.log      ###指定日志文件
  • 开启并查看运行状态
[root@localhost utils]# /etc/init.d/redis_6379 start
Starting Redis server...
[root@localhost utils]# netstat -anpt | grep redis
tcp        0      0 20.0.0.23:6379          0.0.0.0:*               LISTEN      21083/redis-server  
tcp        0      0 127.0.0.1:6379          0.0.0.0:*               LISTEN      21083/redis-server  

redis启动脚本位置在 /etc/init.d/redis_6379 运行时加上绝对路径,或者可自己写入脚本交给Service管理

  • 登录
[root@localhost utils]# redis-cli -h 20.0.0.23 -p 6379
20.0.0.23:6379>
然后就可以使用了

-h 登录地址 -p 端口

四、redis数据类型与实例

Redis支持五种数据类型:

  • string (字符串)
  • hash(哈希)
  • list(列表)
  • set(集合)
  • zset(sorted set:有序集合)

4.1string(字符串)

  • string是redis最基本的类型,与Memcached一模一样的类型,一个key对应一个value。
  • string类型是二进制安全的。redis的string 可以包含任何数据。比如jpg图片或者序列化的对象。
  • string 类型是Redis最基本的数据类型,string 类型的值最大能存储512MB。
20.0.0.23:6379> set name alis				#set存放数据
OK
20.0.0.23:6379> get name                    #get获取数据
"alis"
20.0.0.23:6379> keys *						#查看键值
1) "name"
20.0.0.23:6379> type name					#查看键类型
string

4.2Hash(哈希字典)

  • Redis hash是一个键值(key=>value)对集合。

  • Redis hash是一个string类型的field和value的映射表,hash特别适合用于存储对象。

  • 每个hash可以存储2的32次方-1键值对。

  • 作用场景:
    健值对集合,即编程语言中的Map类型
    适合存储对象,并且可以像数据库中update一个属性一样只修改某一项属性值

20.0.0.23:6379> hmset info name victor age 22 sex 男 
##hmset 存取多个数据,info为存储对象 name-victor  sge-22 sex-男是对象的描述属性
OK
20.0.0.23:6379> hget info name    #hget获取数据,一次只能查看对象的一个属性
"victor"
20.0.0.23:6379> hget info age
"22"
20.0.0.23:6379> hget info sex     #识别不出中文,乱码
"\xe7\x94\xb7"
20.0.0.23:6379> keys *			
1) "name"
2) "info"
20.0.0.23:6379> type info		#类型为hash
hash
--raw 解决中文乱码问题

[root@localhost utils]# redis-cli -h 20.0.0.23 -p 6379 --raw    ##登录的时候加上raw项,识别中文
20.0.0.23:6379> hget info sex  
男

4.3List(列表)

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

  • 列表最多可存储2^32 -1 个元素。

  • 作用场景:
    1、增删快,提供了操作某一段元素的API
    2、最新消息排行等功能(比如朋友圈的时间线)
    3、消息队列

  • 一个key写入多个value时,遵循着先入后出,后入先出的堆栈规则

  • 存入的value可以重复

20.0.0.23:6379> lpush hobby draw dance song #lpush存入数据 draw在前存入
3
20.0.0.23:6379> lrange hobby 0 10   #lrange读取数据,draw变成了最后一个读取
song
dance
draw
20.0.0.23:6379> lrange hobby 0 0
song
20.0.0.23:6379> lrange hobby 1 1
dance
20.0.0.23:6379> lrange hobby 2 2
draw
list可以重复存储
20.0.0.23:6379> lpush hobby dance
4
20.0.0.23:6379> lrange hobby 0 10
dance
song
dance
draw
20.0.0.23:6379> type hobby    #查看类型为type
list

4.4Set(无序集合)

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

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

  • 作用场景:
    1、比如QQ的共同好友
    2、利用唯一性,统计访问网站的所有独立ip
    3、好友推荐时,根据tag求交集,大于某个阈值就可以推荐

  • 集合存储,不论有序还是无序都不能存储重复的值

20.0.0.23:6379> sadd animal dog cat duck     # sadd存入
3
20.0.0.22:6379> smembers  animal        #smembers  查看数据
cat
dog
duck
#######只能一起拿出来看,不能单独看其中一个
20.0.0.23:6379> sadd animal dog  #存入重复的返回状态码0,报错
0

20.0.0.23:6379> type animal  ##查看类型set
set

4.5Zset(sorted set:有序集合)

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

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

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

  • 作用场景:
    将Set中的元素增加一个权重参数score,元素按score有序排列
    数据插入集合时,已经进行天然排序 1、排行榜 2、带权重的消息队列

20.0.0.23:6379> zadd animal 0 dog     ##zadd添加数据,分数为0
1									##存储成功,返回状态码1
20.0.0.23:6379> zadd animal 0 cat     ##存储时分数可以重复
1
20.0.0.23:6379> zadd animal 0.5 rabbit
1
20.0.0.23:6379> zadd animal 2 monkey
1
20.0.0.23:6379> zrangebyscore animal 0 10        #####zrangebyscore 按分数排序查询
cat
dog
rabbit
monkey
20.0.0.23:6379> zadd animal 1.7 bird    ####插入数据后,发现按分数有序插入
1
20.0.0.23:6379> zrangebyscore animal 0 10
cat
dog
rabbit
bird
monkey
20.0.0.23:6379> zrangebyscore animal 0 1    ####获取数据的时候可以按分数段获取单个或多个
cat
dog
rabbit
20.0.0.23:6379> zrangebyscore animal 1 2
bird
monkey

五、常用命令

除了上面数据常用的五种类型用法,还有一些常用命令

5.1select切换数据库

我们知道redis有16个子数据库,0-15,我们默认进去的是数据库0,要换别的数据库怎么办?

20.0.0.23:6379> select 1       ##切换到数据库1
OK
20.0.0.23:6379[1]> select 2    ##切换到数据库2
OK
20.0.0.23:6379[2]> keys *      ##看一下,没有数据,数据库之间隔离


20.0.0.23:6379[2]> select 0    ##回到0
OK
20.0.0.23:6379> keys * 			##keys还在
name
info
animal
hobby

5.2数据迁移move

20.0.0.23:6379> move name 1    ##move 键 数据库序号
1
20.0.0.23:6379> keys *
info
animal
hobby
20.0.0.23:6379> select 1
OK
20.0.0.23:6379[1]> get name     ###数据成功迁移
alis

5.3高危FLUSHALL

数据库之间虽然互相隔离,但是也有共通之处,FLUSHALL删除所有数据库数据

20.0.0.23:6379[1]> FLUSHALL
OK
20.0.0.23:6379[1]> get name

20.0.0.23:6379[1]> select 0
OK
20.0.0.23:6379> keys *

5.4检测key存在exist

20.0.0.23:6379> set name moli
OK
20.0.0.23:6379> EXISTS name        ##存在,返回状态码1
1
20.0.0.23:6379> exists hobby        ##不存在,返回状态码0
0

5.5key重命名rename

20.0.0.23:6379> RENAME name girl
OK
20.0.0.23:6379> get girl
moli

5.6时间管理

  • PTTL 查看剩余时间(毫秒)
  • PEXPIRE 设置超时时间
  • PERSIST 取消超时时间
20.0.0.23:6379> PTTL girl    ##未设置超时时间,永久,为-1
-1
20.0.0.23:6379> PEXPIRE girl 30000    ##设置超时时间30s 
1
20.0.0.23:6379> PTTL girl      #######查看剩余时间,可以看到倒计时
20390
20.0.0.23:6379> PTTL girl
18881
20.0.0.23:6379> PTTL girl
17410
20.0.0.23:6379> PTTL girl
16294
20.0.0.23:6379> PERSIST girl     ####取消超时时间
1
20.0.0.23:6379> PTTL girl
-1

5.7随机返回key——RANDOMKEY

20.0.0.23:6379> mset name zhangsan age 19 score 88   ###mset 一次存储多个键值对
OK
20.0.0.23:6379> RANDOMKEY      ######随机返回key的一个值
score
20.0.0.23:6379> RANDOMKEY
girl
20.0.0.23:6379> RANDOMKEY
girl
20.0.0.23:6379> RANDOMKEY
score
20.0.0.23:6379> RANDOMKEY
girl
20.0.0.23:6379> RANDOMKEY
name
20.0.0.23:6379> RANDOMKEY
age
20.0.0.23:6379> RANDOMKEY
girl
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值