Redis数据库基本使用

乌班图系统下 Redis安装及配置

step1:wget http://download.redis.io/releases/redis-4.0.9.tar.gz 下载
在这里插入图片描述
step2:tar xzf redis-4.0.9.tar.gz 解压
step3:sudo mv ./redis-4.0.9 /usr/local/redis/ 移动文件
step4:cd /usr/local/redis/ 进入Redis目录
step5:sudo make 生成
在这里插入图片描述
step6:sudo make test 测试
在这里插入图片描述
step7:sudo make install 安装

Redis配置:
1.绑定ip:如果需要远程访问,可将此⾏注释,或绑定⼀个真实ip
bind 127.0.0.1 port 6379

  1. 如果以守护进程运⾏,则不会在命令⾏阻塞,类似于服务
    如果以⾮守护进程运⾏,则当前终端被阻塞
    设置为yes表示守护进程,设置为no表示⾮守护进程
    推荐设置为yes
    3.数据文件存储路径:dir /var/lib/redis
    4.日志文件:logfile “/var/log/redis/redis-server.log”
    5.数据库;database 16
    6.主从配置:slaveof

服务端命令:
可以使用:redis-server --help来查看命令帮助
个人习惯:ps aux | grep redis 查看redis服务器进程
sudo kill -9 pid 杀死redis服务器
sudo redis-server /etc/redis/redis.conf 指定加载的配置文件

客户端命令:
1.客户端的命令为redis-cli
2.可以使⽤help查看帮助⽂档 redis-cli --help
3.连接redis redis-cli
4.运行测试:运⾏测试命 ping
5.数据库没有名称,默认有16个,通过0-15来标识,连接redis默认选择第一个数据库,启动时候需要选择数据库: select 1

Redis数据库的基本操作

Redis数据库的操作类型主要是:保存,修改,删除,获取
redis是key-value的数据结构,每条数据都是⼀个键值对
键的类型是字符串
注意:键不能重复
Redis值的数据类型分为以下几种:
1.string:字符串类型是 Redis 中最为基础的数据存储类型,它在 Redis 中是二进制安全的,这便意味着该类型可以接受任何格式的数据,如JPEG图像数据或Json对象描述信息等。在Redis中字符串类型的Value最多可以容纳的数据长度是512M。
2.hash:用于存储对象,对象的结构为属性、值,值类型为string
3.list:列表的元素类型为string
4.set:无序集合,元素为string类型,元素具有唯一性,不重复,对集合没有修改权限
5.zset:有序集合,元素为string类型,元素具有唯一性,不重复,对集合没有修改权限

string操作:

1.set:如果设置的键不存在则为添加,如果设置的键已经存在则修改
用法:set key value

set name python 

2.setx:设置键值及过期时间,以秒为单位
用法:setex key seconds value

setex name 3 aa

3.mset:一次性设置多个键值对
用法:mset key1 value1 key2 value2 .

mset name python a2 java a3 c

4.append:追加值
用法:append key value,注意append使用时键值都需要加引号

append 'name' 'GO'

5.get:获取:根据键获取值,如果不存在此键则返回nil

get 'name'

6.mget:根据多个键一次性获取多个值

mget name age sex

常用的键命令

1.查看所有键

keys *

2.查看名称中包含a的键

keys a*

3.判断键a1是否存在

exists a1

4.查看键对应的value的类型

type a1

5.删除键及对应的值

del a1 a2

6.设置过期时间,以秒为单位,如果没有指定过期时间则⼀直存在,直到使⽤DEL移除

expire 'a1' 3 #和setx用法区别:setx是设置某个键中指定值的过期时间,而expire是设置整个键的过期时间

6.查看有效时间,以秒为单位

ttl name

hash:

hash⽤于存储对象,对象的结构为属性、值
值的类型为string
1.设置键 user的属性name为python

haset name python

2.设置键user的属性name为pythont、属性age为11

hmset user name python age 11

3.获取键user的所有属性

hkeys user

4.获取键user属性’name’的值

hget user 'name'

5.获取键user属性’name’、'age的值

hmget user 'name' 'age'

6.获取键’user’所有属性的值

hvals user

删除整个hash键及值,使⽤del命令
删除属性,属性对应的值会被⼀起删除
7.删除键’u2’的属性’age’

hdel user age

list:

列表的元素类型为string
按照插⼊顺序排序
1.lpush 在左侧插⼊数据

lpush li a b c

2.rpush 从键为’a1’的列表右侧加⼊数据0 1

rpush a1 a b c

3.linsert 在键为’a1’的列表中元素’b’前加⼊’3’

linsert a1 before b 3

4.lrange 返回列表⾥指定范围内的元素
start、stop为元素的下标索引
索引从左侧开始,第⼀个元素为0
索引可以是负数,表示从尾部开始计数,如-1表示最后⼀个元素
获取键为’a1’的列表所有元素

lrange a1 0 -1

5.lset 设置指定索引位置的元素值
索引从左侧开始,第⼀个元素为0
索引可以是负数,表示尾部开始计数,如-1表示最后⼀个元素
修改键为’a1’的列表中下标为1的元素值为’z’

lset a1 1 z

6.lrem 删除指定元素
将列表中前count次出现的值为value的元素移除
count > 0: 从头往尾移除
count < 0: 从尾往头移除
count = 0: 移除所有
向列表’a2’中加⼊元素’a’、‘b’、‘a’、‘b’、‘a’、‘b’

rpush a2 a b a b a b

从’a2’列表右侧开始删除2个’b’

lrem a2 -2 b

set

⽆序集合
元素为string类型
元素具有唯⼀性,不重复
说明:对于集合没有修改操作

1.sadd 向键’a3’的集合中添加元素’zhangsan’、‘lisi’、‘wangwu’

sadd a3 zhangsan sili wangwu

2.smembers 获取键’a3’的集合中所有元素

smembers a3

3.srem 删除键’a3’的集合中元素’wangwu’

srem a3 wangwu

zset

sorted set,有序集合
元素为string类型
元素具有唯⼀性,不重复
每个元素都会关联⼀个double类型的score,表示权重,通过权重将元素从⼩到⼤排序
说明:没有修改操作
1.zadd 向键’a4’的集合中添加元素’lisi’、‘wangwu’、‘zhaoliu’、‘zhangsan’,权重分别为4、5、6、3

zadd a4 4 lisi 5 wangwu 6 zhaoliu 3 zhangsan

2.zrange 获取:返回指定范围内的元素
start、stop为元素的下标索引
索引从左侧开始,第⼀个元素为0
索引可以是负数,表示从尾部开始计数,如-1表示最后⼀个元素
获取键’a4’的集合中所有元素

zrange as 0 -1  #和list一样都是用range,set是用smembers

3.zrangebyscore 获取键’a4’的集合中权限值在5和6之间的成员

zrangebyscore a4 5 6 #按键值来获取

4.zscore 获取键’a4’的集合中元素’zhangsan’的权重

zscore a4 zhangsan

5.zrem 删除集合’a4’中元素’zhangsan’

zrem a4 zhangsan

6.zrembyscore 删除集合’a4’中权限在5、6之间的元素

zrembyscore a4 5 6

搭建主从

概念:⼀个master可以拥有多个slave,⼀个slave⼜可以拥有多个slave,如此下去,形成了强⼤的多级服务器集群架构
master用来写数据,slave用来读数据,经统计:网站的读写比率是10:1
通过主从配置可以实现读写分离
在这里插入图片描述
master配置:
修改etc/redis/redis.conf文件

sudo vi redis.conf
bind 192.168.26.128

重启redis服务

sudo service redis stop
redis-server redis.conf

slave配置
复制etc/redis/redis.conf文件

sudo cp redis.conf ./slave.conf

修改redis/slave.conf文件

sudo vi slave.conf

编辑内容

bind 192.168.26.128
slaveof 192.168.26.128 6379
port 6378

redis服务

sudo redis-server slave.conf

查看主从关系:

redis-cli -h 192.168.26.128 info Replication

集群

为什么要有集群?
之前已经讲了主从的概念,一主可以多从,如果同时的访问量过大(1000w),主服务肯定就会挂掉,数据服务就挂掉了或者发生自然灾难
像很多 大公司都会有很多的服务器(华东地区、华南地区、华中地区、华北地区、西北地区、西南地区、东北地区、台港澳地区机房),这些就是集群服务器族。
集群的概念:
集群是一组相互独立的、通过高速网络互联的计算机,它们构成了一个组,并以单一系统的模式加以管理。一个客户与集群相互作用时,集群像是一个独立的服务器。集群配置是用于提高可用性和可缩放性,当请求到来首先由负载均衡服务器处理,把请求转发到另外的一台服务器上
在这里插入图片描述
如果说主从提高了读写的效率,你们集群就是在主从的基础上进一步提高系统的稳定性和可扩展性。

简单集群的搭建:
启动一台计算机,如当前ip为:172.16.179.130
1.创建conf目录,在conf⽬录下创建⽂件7000.conf,并写入以下内容:

port 7000
bind 172.16.179.130
daemonize yes
pidfile 7000.pid
cluster-enabled yes
cluster-config-file 7000_node.conf
cluster-node-timeout 15000
appendonly yes

2.在7001.conf目录下写入一下内容:

port 7001
bind 172.16.179.130
daemonize yes
pidfile 7001.pid
cluster-enabled yes
cluster-config-file 7001_node.conf
cluster-node-timeout 15000
appendonly yes

3.在7002.conf目录下输入以下内容:

port 7002
bind 172.16.179.130
daemonize yes
pidfile 7002.pid
cluster-enabled yes
cluster-config-file 7002_node.conf
cluster-node-timeout 15000
appendonly yes

另外在启动一台计算机,如当前ip为:172.16.179.131
1.在conf⽬录下创建⽂件7003.conf,编辑内容如下

port 7003
bind 172.16.179.131
daemonize yes
pidfile 7003.pid
cluster-enabled yes
cluster-config-file 7003_node.conf
cluster-node-timeout 15000
appendonly yes

2.在conf⽬录下创建⽂件7004.conf,编辑内容如下

port 7004
bind 172.16.179.131
daemonize yes
pidfile 7004.pid
cluster-enabled yes
cluster-config-file 7004_node.conf
cluster-node-timeout 15000
appendonly yes

3.在conf⽬录下创建⽂件7005.conf,编辑内容如下

port 7005
bind 172.16.179.131
daemonize yes
pidfile 7005.pid
cluster-enabled yes
cluster-config-file 7005_node.conf
cluster-node-timeout 15000
appendonly yes

接下来的操作在172.16.179.130机器上进⾏
1.将命令复制,这样可以在任何⽬录下调⽤此命令

sudo cp /usr/share/doc/redis-tools/examples/redis-trib.rb /usr/local/bin/

2.安装ruby环境

sudo apt-get install ruby

3.运行如下命令就可以创建集群了:

redis-trib.rb create --replicas 1 172.16.179.130:7000 172.16.179.130:7001 172.16.179.130:7002 172.16.179.131:7003 172.16.179.131:7004 172.16.179.131:7005

提示如下主从信息,输⼊yes后回⻋
在这里插入图片描述
在这里插入图片描述

根据上图可以看出,当前搭建的主服务器为7000、7001、7003,对应的从服务器是7004、7005、7002

在172.16.179.128机器上连接7002,加参数-c表示连接到集群

redis-cli -h 172.16.179.131 -c -p 7002

写入数据:set name Python

⾃动跳到了7003服务器,并写⼊数据成功

集群的深入了解

redis cluster在设计的时候,就考虑到了去中⼼化,去中间件,也就是说,集群中 的每个节点都是平等的关系,都是对等的,每个节点都保存各⾃的数据和整个集 群的状态。每个节点都和其他所有节点连接,⽽且这些连接保持活跃,这样就保 证了我们只需要连接集群中的任意⼀个节点,就可以获取到其他节点的数据
Redis集群没有并使⽤传统的⼀致性哈希来分配数据,⽽是采⽤另外⼀种叫做哈希 槽 (hash slot)的⽅式来分配的。redis cluster 默认分配了 16384 个slot,当我们 set⼀个key 时,会⽤CRC16算法来取模得到所属的slot,然后将这个key 分到哈 希槽区间的节点上,具体算法就是:CRC16(key) % 16384。所以我们在测试的 时候看到set 和 get 的时候,直接跳转到了7000端⼝的节点
Redis 集群会把数据存在⼀个 master 节点,然后在这个 master 和其对应的salve 之间进⾏数据同步。当读取数据时,也根据⼀致性哈希算法到对应的 master 节 点获取数据。只有当⼀个master 挂掉之后,才会启动⼀个对应的 salve 节点,充 当 master
需要注意的是:必须要3个或以上的主节点,否则在创建集群时会失败,并且当存 活的主节点数⼩于总节点数的⼀半时,整个集群就⽆法提供服务了

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Redis(Remote Dictionary Server)是一个开源的基于内存的数据存储系统,它支持键值对(Key-Value)的存储。Redis具有高性能、高可用性和丰富的数据类型,被广泛应用于缓存、消息队列、计数器等场景。 Redis的数据模型是简单的键值对模型,每个键都与唯一的值相关联。Redis支持多种数据类型,包括字符串(String)、哈希(Hash)、列表(List)、集合(Set)和有序集合(Sorted Set)等。这些数据类型使得Redis能够处理各种不同的数据结构和操作。 Redis具有以下特点: 1. 高性能:Redis将数据存储在内存中,并且使用高效的数据结构和算法来提供快速的读写操作。 2. 持久化:Redis支持数据持久化,可以将数据保存到磁盘上,以防止数据丢失。 3. 高可用性:Redis提供了主从复制和哨兵机制,确保系统的高可用性和故障恢复能力。 4. 分布式:Redis Cluster支持数据的分片和分布式存储,以满足大规模应用的需求。 5. 发布订阅:Redis支持发布订阅模式,可以用于构建实时消息系统或事件驱动的应用。 Redis适用于需要快速读写操作和高并发访问的场景,如缓存、会话管理、实时分析等。它也可以作为其他数据库(如关系型数据库)的辅助存储,提供更高效的数据访问。Redis具有简单易用的API和丰富的客户端库,支持多种编程语言(如Java、Python、Node.js)的集成。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值