2022-01-18 day74 redis

第1章 Redis介绍

1.关系型和非关系型数据库

关系型: MySQL

非关系型: Redis,mongo,Elasticsearch

2.Redis重要特性 AK47

1)速度快

  c语言编写的

  代码优雅简洁

  单线程架构

  内存型数据库

2)支持多种数据结构

  字符串,哈希,列表,集合,有序集合

3)丰富的功能

  天然计数器

  键过期功能

  消息队列

  发布订阅

4)支持客户端语言多

  php,java,go,python

5)支持数据持久化

  所有在运行的数据都是放在内存里的

  支持多种数据久化格式,RDB,AOF,混合持久化

6)自带多种高可用架构

  主从,哨兵,集群

3.Redis应用场景-面试重点

1)缓存-键过期

  把session数据缓存在redis里,过期删除

  换用用户信息,缓存mysql部分的数据,用户先访问redis,如果redis没命中,在访问mysql,然后回写给redis

  商城优惠卷过期

  短信验证码过期

2)排行榜-列表&有序集合

  热度/点击量

  直播间礼物打赏排行榜

3)计数器-天然计数器

  帖子浏览数

  视频播放次数

  评论次数

  点赞/点踩

4)社交网络-集合

  粉丝

  共同好友/可能认识的人

  兴趣爱好/标签

  检查用户注册名是否已经被注册

5)消息队列-列表

  ELK缓存日志

  聊天记录

6)发布订阅

  粉丝关注通知

  消息发布 


第2章 Redis的安装部署

1.目录规划

/opt/redis_6379/{conf,logs,pid} 安装目录,日志目录,pid目录,配置目录

/data/redis_6379/      数据目录

2.下载安装

安装编译安装包

yum install gcc -y


mkdir /data/soft -p

cd /data/soft/


wget http://download.redis.io/releases/redis-5.0.14.tar.gz


tar zxf redis-5.0.14.tar.gz


cd redis-5.0.14


make  #如果报错可以执行 make MALLOC=libc


make install


3.创建目录及配置文件

mkdir -p /opt/redis_6379/{conf,logs,pid}

mkdir -p /data/redis_6379


cat > /opt/redis_6379/conf/redis_6379.conf <

daemonize yes

bind 127.0.0.1 10.0.0.51

port 6379

pidfile /opt/redis_6379/pid/redis_6379.pid

logfile /opt/redis_6379/logs/redis_6379.log

EOF


4.启动命令

redis-server /opt/redis_6379/conf/redis_6379.conf


ps -ef|grep redis


netstat -lntup|grep 6379


5.登录

[root@db-51 ~]# redis-cli


127.0.0.1:6379> set k1 v1

OK

127.0.0.1:6379> get k1

"v1"


6.关闭redis

redis-cli shutdown


第3章 使用systemd管理redis

redis-cli shutdown

groupadd redis -g 2000

useradd redis -u 2000 -g 2000 -M -s /sbin/nologin

chown -R redis:redis /opt/redis*

chown -R redis:redis /data/redis*


cat >/usr/lib/systemd/system/redis.service<

[Unit]

Description=Redis persistent key-value database

After=network.target

After=network-online.target

Wants=network-online.target

[Service]

ExecStart=/usr/local/bin/redis-server /opt/redis_6379/conf/redis_6379.conf --supervised systemd

ExecStop=/usr/local/bin/redis-cli shutdown

Type=notify

User=redis

Group=redis

RuntimeDirectory=redis

RuntimeDirectoryMode=0755

[Install]

WantedBy=multi-user.target

EOF


systemctl daemon-reload

systemctl start redis


第4章 优化警告

查看警告 cat /opt/redis_6379/logs/redis_6379.log

1.告警内容

# WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.

# Server initialized

# WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.

# WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled.

* Ready to accept connections

2.解决TCP backlog太低

cat /proc/sys/net/core/somaxconn

echo '511' > /proc/sys/net/core/somaxconn

cat /proc/sys/net/core/somaxconn


3.解决overcommit_memory

echo 'vm.overcommit_memory = 1' >> /etc/sysctl.conf

sysctl -p


4.解决Transparent Huge Pages (THP)

echo never > /sys/kernel/mm/transparent_hugepage/enabled

解决报警消息,必须先关闭redis



写入开机自启中


vim /etc/rc.local

修改执行权限 chmod +x /etc/rc.d/rc.local



第5章 Redis全局命令

1.数据格式

键值对数据库

键:值

key:value

2.数据类型

字符串

哈希

列表

集合

有序集合

3.查看所有数据!!!工作里禁止使用!!!

#测试命令

修改完配置后,启动redis


redis-cli

set k1 v1

set k2 v2

set k3 v3


#查看所有数据

127.0.0.1:6379> keys *

1) "k3"

2) "k2"

3) "k1"



4.查看一共有多少个数据

127.0.0.1:6379> DBSIZE

(integer) 3


5.查看某个key是否存在

127.0.0.1:6379> EXISTS k1

(integer) 1


127.0.0.1:6379> EXISTS k4

(integer) 0


127.0.0.1:6379> EXISTS k1 k2 k3 k4

(integer) 3


返回值:

0 这个key不存在

1  这个key存在

N  查询的key存在N个

6.删除KEY

127.0.0.1:6379> del k0

(integer) 0

127.0.0.1:6379> del k1

(integer) 1


127.0.0.1:6379> del k2 k3 k4

(integer) 2


返回值:

0 这个key不存在

1  这个key存在,删除成功

N  存在N个key,删除成功N个

7.键过期

设置过期时间:

127.0.0.1:6379> EXPIRE k1 10

(integer) 1


127.0.0.1:6379> EXPIRE k100 10

(integer) 0

返回值:

1 设置过期时间成功

0 这个key不存在

查看key的过期时间:

127.0.0.1:6379> ttl k1

(integer) 9

127.0.0.1:6379> ttl k1

(integer) 8


返回值:

-1  表示这个key永远不过期

-2  表示这个key不存在

N    表示这个key还有N秒过期

取消过期时间:

方法1: 重新设置这个key

127.0.0.1:6379> get k1

"v1"

127.0.0.1:6379> set k1 v1

OK

127.0.0.1:6379> ttl k1

(integer) -1


方法2: 取消过期命令

127.0.0.1:6379> ttl k1

(integer) 96


127.0.0.1:6379> PERSIST k1

(integer) 1

127.0.0.1:6379> ttl k1

(integer) -1


第6章 Redis字符串数据类型

1.插入一个Key

set k1 v1


2.查看一个key

get k1


3.插入多个Key

mset k1 v1 k2 v2 k3 v3


4.查看多个key

mget k1 k2 k3


5.天然计数器

加1操作:

INCR k1


减1操作:

DECR k1


加N操作:

INCRBY k1 100


减N操作:

INCRBY k1 -N


第7章 列表操作

1.插入列表

LPUSH list1 A B C

RPUSH list1 D E F


2.查看列表长度

LLEN list1


3.查看列表内容

LRANGE list1 0 -1


4.删除元素

LPOP list1


RPOP list1



第8章 HASH操作

1.mysql和redis数据对比

mysql数据格式:

user表

id  name  job  age

1 boss  it  18

2    wei    it  24

3    cookz  it  30

Redis HASH类型:

key     field1  value  field2  value  field3  value

user:1  name    boss  job    it    age    18

user:2  name    wei    job    it    age    24

user:3  name    cookz  job    it    age    30

2.创建一个HASH数据

hmset user:1 name boss  job it age 18

hmset user:2 name wei  job it age 24

hmset user:3 name cookz job it age 30


3.查询所有数据

select * from user where id = 1;

HGETALL user:1

4.查询指定字段数据

select name from user where id = 1;

select name,job,age from user where id = 1;

HMGET user:1 name


HMGET user:1 name job age


第9章 集合操作

1.创建集合

SADD set1 1 2 3 4

SADD set2 1 3 5 7


2.取交集

SINTER set1 set2


3.取差异

SDIFF set1 set2


SDIFF set2 set1


4.取并集

SUNION set1 set2


5.查看成员信息

SMEMBERS set1

SMEMBERS set2


6.删除成员

SREM set1 1


第10章 有序集合操作

1.添加有序集合

ZADD linux7 1 bo

ZADD linux7 1 lao6

ZADD linux7 1 he


2.计算成员个数

ZCARD linux7


3.计算某个成员分数

ZSCORE linux7 he


4.增加成员分数

ZINCRBY linux7 50 he


5.按照升序查看成员名次

ZRANK linux7 he


0 he    51

1 liu  52

2 zhang 101

5.按照降序查看成员名次

ZREVRANK linux7 he


0 zhang 101

1 liu  52

2 he    51

6.删除成员

ZREM linux7 he


7.返回指定排名范围的成员

ZRANGE linux7 0 -1


8.返回指定分数范围的成员

ZRANGEBYSCORE linux7 50 100


9.返回指定分数范围的成员同时显示分数

ZRANGEBYSCORE linux7 1 200 WITHSCORES


你可能感兴趣的:(2022-01-18 day74 redis)