分布式--Redis的安装与数据类型的使用

2022-06-27 13:01:42 浏览数 (1)

Redis是一种NoSQL数据库,NoSQL的意思是不仅仅可以使用关系型数据库,由于关系型数据库的数据是存储在文件中,每次操作都是IO操作,而文件的IO操作又是比较缓慢的,NoSQL打破了原先一个表对应表字段,然后再存储数据的方式,将数据以特殊的方式存储,对程序运行效率有显著的提升 目前市面上常见的NoSQL有以下几种:

NoSQL

描述

memcached

内存型数据库,所有数据存储于内存中,以键值对形式存放

Redis

内存型数据库,还具备持久化能力,代价是性能有所降低

HBase

以列作为存储

MongoDB

以Document作存储

一、Redis安装与启动

安装可以直接使用yum

代码语言:javascript复制
yum install epel-release
yum install redis

由于下面需要模拟多台Redis服务器,需要复制多份Redis,yum方式会直接安装到/usr/bin目录,不方便复制,所以我们以手动编译的方式

1. 安装Redis

Redis使用c语言编写,所以编译需要使用c的编译工具:

代码语言:javascript复制
yum install -y gcc-c   automake autoconf libtool make tcl 

官网文档:https://redis.io/docs/getting-started/installation/install-redis-from-source/

代码语言:javascript复制
wget https://download.redis.io/redis-stable.tar.gz
tar -xzvf redis-stable.tar.gz
cd redis-stable
make

指定Redis安装到/usr/local/redis目录

代码语言:javascript复制
make install PREFIX=/usr/local/redis

官网首页上也可以下载到编译完的压缩包

2. 配置Redis

回到你解压出Redis的目录,里面有个redis.conf文件,将它拷贝一份到Redis安装目录/usr/local/redis

代码语言:javascript复制
cp ./redis.conf /usr/local/redis/bin/

修改配置文件中下面的选项:

代码语言:javascript复制
# 后台方式启动
daemonize yes
# 注释下面bind配置
# bind 127.0.0.1 -::1
# 允许外部访问
protected-mode no
3. 启动Redis

启动时指定使用配置文件

代码语言:javascript复制
./redis-server redis.conf

二、Redis数据类型

Redis常用五大类型:

类型

描述

使用场景

string

key-value形式存储,是redis最基本的类型,最大存储512MB

所有key-value形式的存储

hash

key-field-value形式存储,一个key可以对应多个field

存储对象

list

有序的字符串列表

消息队列、列表

set

无序集合,内部无重复值,和Java中的HashSet类似

去重、判断是否存在集合中

zset

除了set的特性外,还具有优先级,按照优先级排序,默认优先级为插入顺序

排行榜

三、Redis常用命令

官网文档:https://www.redis.net.cn/order/

下面使用Redis的客户端,来简单使用下命令

代码语言:javascript复制
./redis-cli
1. 操作string
1.1 set

设置key-value:

代码语言:javascript复制
set name zhangsan

返回:OK

1.2 get

获取key对应的value:

代码语言:javascript复制
get name

返回:value值

1.3 setnx

设置key-value,且仅当key不存在时:

代码语言:javascript复制
setnx name lisi

返回:改变数

1.4 setex

设置key-value,并指定过期时间:

代码语言:javascript复制
setex name 3 lisi

返回:OK

2. 操作key
2.1 exists

判断key是否存在:

代码语言:javascript复制
exists name

返回:不存在返回0,存在返回1

2.2 expire

为key设置过期时间,单位秒:

代码语言:javascript复制
expire name 5

返回:成功 1 失败 0

2.3 ttl

查看key过期剩余时间:

代码语言:javascript复制
ttl name

返回:过期 -2、永不过期 -1、没过期 剩余时间

2.4 del

删除key对应的key-value:

代码语言:javascript复制
del name

返回:成功 1 失败 0

3. 操作hash
3.1 hset

设置key-field-value:

代码语言:javascript复制
hset person name zhangsan
hset person age 18

返回:成功 1 失败 0

3.2 hget

获取key中field对应的值:

代码语言:javascript复制
hget person name

返回:value值

3.3 hmset

一次性设置多个field-value:

代码语言:javascript复制
hmset person address beijing gender man

返回:成功 OK

3.4 hmget

一次性获取多个field的值:

代码语言:javascript复制
hmget person address gender

返回:多个value值

3.5 hvals

获取所有value值:

代码语言:javascript复制
hvals person

返回:多个value值

3.6 hgetall

获取所有field和value:

代码语言:javascript复制
hgetall person

返回:多个field和value值

4. 操作list
4.1 rpush

向一个列表末尾中插入一个或多个值,如果列表不存在,则创建

代码语言:javascript复制
rpush list a b c

返回:成功 列表中元素数

4.2 lpush

向一个列表头中插入一个或多个值,如果列表不存在,则创建

代码语言:javascript复制
lpush list d e f

返回:成功 列表中元素数

4.3 lrange

返回列表中指定区间内的值,可以用-1代表末尾

代码语言:javascript复制
lrange list 0 -1

返回:查询到的值

4.4 llen

获取列表长度

代码语言:javascript复制
llen list

返回:列表长度

4.5 lrem

删除列表中的指定个数的指定value,个数为正,从左往右删除,为负,从右往左删除

代码语言:javascript复制
lrem list 2 f

返回:删除数量

5. 操作set
5.1 sadd

将一个或多个值插入集合中,重复元素不生效,如果集合不存在,则创建

代码语言:javascript复制
sadd blacks a b c

返回:插入数

5.2 scard

返回集合元素数量

代码语言:javascript复制
scard blacks

返回:集合元素数量

5.3 smembers

返回集合中的元素

代码语言:javascript复制
smembers blacks

返回:集合中所有元素

6. 操作zset
6.1 zadd

向有序集合中添加分数和数据,集合不存在,则创建

代码语言:javascript复制
zadd rank 10 xiaoming 20 xiaohei

返回:插入数

6.2 zrange

获取指定区间的集合内容,withscores表示带有分数

代码语言:javascript复制
zrange rank 0 -1
zrange rank 0 -1 withscores

返回:集合内容

0 人点赞