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

2022-06-24  本文已影响0人  aruba

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

NoSQL 描述
memcached 内存型数据库,所有数据存储于内存中,以键值对形式存放
Redis 内存型数据库,还具备持久化能力,代价是性能有所降低
HBase 以列作为存储
MongoDB 以Document作存储

一、Redis安装与启动

安装可以直接使用yum

yum install epel-release
yum install redis

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

1. 安装Redis

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

yum install -y gcc-c++ automake autoconf libtool make tcl 

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

wget https://download.redis.io/redis-stable.tar.gz
tar -xzvf redis-stable.tar.gz
cd redis-stable
make

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

make install PREFIX=/usr/local/redis

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

2. 配置Redis

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

cp ./redis.conf /usr/local/redis/bin/

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

# 后台方式启动
daemonize yes
# 注释下面bind配置
# bind 127.0.0.1 -::1
# 允许外部访问
protected-mode no

3. 启动Redis

启动时指定使用配置文件

./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的客户端,来简单使用下命令

./redis-cli

1. 操作string

1.1 set

设置key-value:

set name zhangsan

返回:OK

1.2 get

获取key对应的value:

get name

返回:value值

1.3 setnx

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

setnx name lisi

返回:改变数

1.4 setex

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

setex name 3 lisi

返回:OK

2. 操作key

2.1 exists

判断key是否存在:

exists name

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

2.2 expire

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

expire name 5

返回:成功 1 失败 0

2.3 ttl

查看key过期剩余时间:

ttl name

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

2.4 del

删除key对应的key-value:

del name

返回:成功 1 失败 0

3. 操作hash

3.1 hset

设置key-field-value:

hset person name zhangsan
hset person age 18

返回:成功 1 失败 0

3.2 hget

获取key中field对应的值:

hget person name

返回:value值

3.3 hmset

一次性设置多个field-value:

hmset person address beijing gender man

返回:成功 OK

3.4 hmget

一次性获取多个field的值:

hmget person address gender

返回:多个value值

3.5 hvals

获取所有value值:

hvals person

返回:多个value值

3.6 hgetall

获取所有field和value:

hgetall person

返回:多个field和value值

4. 操作list

4.1 rpush

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

rpush list a b c

返回:成功 列表中元素数

4.2 lpush

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

lpush list d e f

返回:成功 列表中元素数

4.3 lrange

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

lrange list 0 -1

返回:查询到的值

4.4 llen

获取列表长度

llen list

返回:列表长度


4.5 lrem

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

lrem list 2 f

返回:删除数量

5. 操作set

5.1 sadd

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

sadd blacks a b c

返回:插入数

5.2 scard

返回集合元素数量

scard blacks

返回:集合元素数量

5.3 smembers

返回集合中的元素

smembers blacks

返回:集合中所有元素

6. 操作zset

6.1 zadd

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

zadd rank 10 xiaoming 20 xiaohei

返回:插入数

6.2 zrange

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

zrange rank 0 -1
zrange rank 0 -1 withscores

返回:集合内容

上一篇下一篇

猜你喜欢

热点阅读