redis安装和数据类型

关系型数据库和非关系型数据库的区别:

①存储结构不同,关系型数据库是二维表格的方式,非关系型数据库是键值对的形式(文档、图文等);

②扩展方式不同,关系型数据库是纵向提升硬件性能,非关系型数据库是横向增加节点服务器;

③事务形式,关系型数据库支持sql语句处理复制查询和操作,更加精准,非关系型数据库只支持简单的事务操作。

非关系型数据库的数据类型:

①string 字符串类型

②hash散列类型

③list列表类型

④set无序集合

⑤zset有序集合

redis为什么这么快?

①redis是纯内存结构,数据操作都是在内存中完成的;

②采用i/o多路复用,提高线程处理更多的连接请求;

③数据采用单线程模式,可以减少多线程切换的消耗,也不用考虑锁的性能消耗。

Redis 安装部署

环境准备

systemctl stop firewalld
systemctl disable firewalld
setenforce 0

修改内核参数

vim /etc/sysctl.conf
vm.overcommit_memory = 1
net.core.somaxconn = 2048
sysctl -p

在这里插入图片描述
安装redis

yum install -y gcc gcc-c++ make
 
tar zxvf /opt/redis-7.0.9.tar.gz -C /opt/
cd /opt/redis-7.0.9
make
make PREFIX=/usr/local/redis install
#由于Redis源码包中直接提供了 Makefile 文件,所以在解压完软件包后,不用先执行 ./configure 进行配置,可直接执行 make 与 make install 命令进行安装。

创建redis工作目录

mkdir /usr/local/redis/{conf,log,data}
 
cp /opt/redis-7.0.9/redis.conf /usr/local/redis/conf/
 
useradd -M -s /sbin/nologin redis
chown -R redis.redis /usr/local/redis/

环境变量

vim /etc/profile 
PATH=$PATH:/usr/local/redis/bin		#增加一行
 
source /etc/profile

在这里插入图片描述
修改配置文件

vim /usr/local/redis/conf/redis.conf
bind 127.0.0.1 192.168.80.10					#87行,添加 监听的主机地址
protected-mode no					#111行,将本机访问保护模式设置no。如果开启了,那么在没有设定bind ip且没有设密码的情况下,Redis只允许接受本机的响应
port 6379										#138行,Redis默认的监听6379端口
daemonize yes									#309行,设置为守护进程,后台启动
pidfile /usr/local/redis/log/redis_6379.pid		#341行,指定 PID 文件
logfile "/usr/local/redis/log/redis_6379.log"	#354行,指定日志文件
dir /usr/local/redis/data						#504行,指定持久化文件所在目录
requirepass abc123								#1037行,增加一行,设置redis密码

定义systemd服务管理脚本

vim /usr/lib/systemd/system/redis-server.service
[Unit]
Description=Redis Server
After=network.target
 
[Service]
User=redis
Group=redis
Type=forking
TimeoutSec=0
PIDFile=/usr/local/redis/log/redis_6379.pid
ExecStart=/usr/local/redis/bin/redis-server /usr/local/redis/conf/redis.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
 
[Install]
WantedBy=multi-user.target

启动服务

systemctl start redis-server
systemctl enable redis-server
 
netstat -lntp | grep 6379

在这里插入图片描述

Redis 命令工具:

①redis-cli:

语法:redis-cli -h host -p port [-a password]
-h :指定远程主机
-p :指定 Redis 服务的端口号
-a :指定密码,未设置数据库密码可以省略-a 选项
若不添加任何选项表示,则使用 127.0.0.1:6379 连接本机上的 Redis 数据库

②redis-benchmark:

基本的测试语法:redis-benchmark [选项] [选项值]。
-h :指定服务器主机名。
-p :指定服务器端口。
-s :指定服务器 socket
-c :指定并发连接数。 
-n :指定请求数。
-d :以字节的形式指定 SET/GET 值的数据大小。
-k :1=keep alive 0=reconnect 。
-r :SET/GET/INCR 使用随机 key, SADD 使用随机值。
-P :通过管道传输<numreq>请求。
-q :强制退出 redis。仅显示 query/sec 值。
--csv :以 CSV 格式输出。
-l :生成循环,永久执行测试。
-t :仅运行以逗号分隔的测试命令列表。
-I :Idle 模式。仅打开 N 个 idle 连接并等待。

#向 IP 地址为 192.168.169.10、端口为 6379 的 Redis 服务器发送 100 个并发连接与 100000 个请求测试性能
redis-benchmark -h 192.168.169.10 -p 6379 -c 100 -n 100000

#测试存取大小为 100 字节的数据包的性能
redis-benchmark -h 192.168.22.10 -p 6379 -q -d sj123

#测试本机上 Redis 服务在进行 set 与 lpush 操作时的性能
redis-benchmark -t set,lpush -n 100000 -q

清除数据库内数据
FLUSHDB :清空当前数据库数据
FLUSHALL :清空所有数据库的数据,慎用!

错误修正:

在redis中添加list,字符串类型的键值对之后,redisDeskManager上提示了一些错误信息:

MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk. Commands that may modify the data set are disabled. Please check Redis logs for details about the error 大概意思是:Redis被配置为保存数据库快照,但它目前不能持久化到磁盘。用来修改集合数据的命令不能用。请查看Redis日志的详细日志信息。

方法:

在命令行添加:

127.0.0.1:6379> config set stop-writes-on-bgsave-error no

数据类型:

①string字符串类型:最基本的类型,最大能存储512MB的数据,String类型是二进制安全的,即可以存储任何数据、比如数字、图片、序列化对象等;

set:为键设置新值,并覆盖原有值;

get:获取键的值;

strlen:获取指定值的长度;

exists:判断键是否存在;

incr:键值递增1;

decr:键值递减1;

del:删除已有键;

incrby:递增指定整数;

decrby:递减指定整数;

expire(setex):为键设置生命周期;

ttl:查看键的生命周期;

mset:设置多个键;

mget:查看多个键;

②list列表类型:列表的元素类型为string,按照插入顺序排序,在列表的头部或尾部添加元素

lpush:+键 +多个值 ;

lrange:+键 0 -1 查看所有(0 2 查看第一个到第三个);

del:删除键;

lpop/rpop:移除并返回mykey键的左边/右边第一个元素;

llen:查看长度;

lindex:获取第几个索引的值;

linsert 键 before/after 旧值  新值:在旧值前面/后面插入新值;

③hash散列类型:hash用于存储对象。可以采用这样的命名方式:对象类别和ID构成键名,使用字段表示对象的属性,而字段值则存储属性值

hset:为键设置新值,并覆盖原有值;

hget:获取键的值;

hstrlen:获取指定值的长度;

hexists:判断键是否存在;

hincr:键值递增1;

hdecr:键值递减1;

del:删除已有键;

hincrby:递增指定整数;

hdecrby:递减指定整数;

hexpire(setex):为键设置生命周期;

hmset:设置多个键;

hmget:查看多个键;

hkeys:获取所有字段的名字;

hvals:获取所有字段的值;

## ④set无序集合:元素具有唯一性,不允许存在重复的成员。多个集合类型之间可以进行并集、交集和差集运算。

sadd:+键  +多个值 ;

sismember:+键  +多个值  判断是否存在这个值;

smembers:查看所有的值;

scard:获取Set集合中元素的数量;

spop:随机的移除并返回Set中的某一成员;

srem myset a d f:从Set中移出a、d和f三个成员,其中f并不存在,因此只有a和d两个成员被移出,返回为2;

smove myset myset2 a:将a从myset移到myset2,从结果可以看出移动成功;

⑤zset有序集合:有序集合,元素类型为Sting,元素具有唯一性,不能重复

zadd:+键  +多个值 ;

zrange myzset 0 -1 WITHSCORES:0表示第一个成员,-1表示最后一个成员。WITHSCORES选项表示返回的结果中包含每个成员及其分数,否则只返回成员;

zrank myzset one :取成员one在Sorted-Set中的位置索引值。0表示第一个位置;

zrem:删除;

zincrby:成员不存在,zincrby命令将添加该成员并假设其初始分数;

zcard:查看是否删除成功;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值