Redis从安装到使用(1)

Redis介绍

Redis是一个开源的基于内存的键值对数据库

特征:

  1. 基于内存,读写速度极快,可以处理大量读写请求。
  2. 支持多种数据结构,如字符串、哈希、列表、集合、有序集合等,具有丰富的数据表示能力
  3. 支持主从复制,提供数据冗余和故障恢复能力。
  4. 支持持久化,可以将内存数据保存到磁盘中。
  5. 支持事务,可以一次执行多个命令。
  6. 丰富的功能,可用于缓存、消息队列等场景。

场景:

  1. 缓存常见的使用场景,比如缓存查询结果、热点数据等,大大降低数据库负载。
  2. 处理大量的读写请求,比如访问统计、消息队列等。
  3. 排行榜、计数器等功能的实现。
  4. pub/sub消息订阅。
  5. QUE计划任务
  6. 分布式锁等。


一、Windows安装

reids安装包

  1. 下载本地并找到合适目录解压
  2. 双击 redis-server.exe 启动redis,如图则是成功 

    0dabc8105dd9465e8f971be17c82f6dc.png

    6111de3330a642f093d402fecd54d91a.png

  3. 双击 redis-cli.exe 启动命令行窗口,如图则是成功

95a9429d457646dbbfb82b230019c4ed.png

ba84c44ee25c47bfaeafa45517914b06.png


二、Linux安装Redis

RedisLinux安装包

老多安装包的地址

1. 移动到服务器上并解压

tar zxvf redis-6.2.7.tar.gz 

d5afe434475748aeba7d773a29c9ef25.png

 // 个人习惯,喜欢放在 /usr/local 目录下并改名,具体看自己

mv redis-6.2.7 /usr/local/redis

 2. 检查本地是否有gcc环境

0ee5580b88fb40d6ab272b8faae3a767.png

如果没有则  

yum install gcc

 3. 在redis目录下 进入src目录下并编译,此命令执行完,redis就编译完成了

cd src && make all

4.安装redis

make install PREFIX=/usr/local/redis

 f0790d1947dc44af96f055616c3f1f8a.png

5. 进入redis目录下

./bin/redis-server redis.conf

9e601167a5f147b58ece2da760863dc4.png

6. 修改redis配置文件,让redis从后台启动

vim redis.conf

 把此处的no改成yes

e2ec43f079bf4749a11364defa82545b.png

7.如果需要其他主机连接redis需要配置 bind * -::*() 

  • 进入vim之后,输入 /bind 即可查询
  • 使用n键跳转到下一个搜索结果。
  • 使用N键跳转到上一个搜索结果

b55d3e07b9f5400e9eadefda2d34f579.png

 8. redis设置密码 

2895210503f2456c9797d7a937b35cd4.png

9.编写redis启动脚本(自用)

先创建一个脚本文档

vim redisStart.sh

 把这个复制进去 :  ./bin/redis-server redis.conf

最后添加权限

chmod +x redisStart.sh

 执行启动

./redisStart.sh

 查询进程

ps -ef |grep redis

a46bd8a70e064e26b4c01ec0a7924ccc.png

最后直接使用ip地址加密码进行连接即可!


三、Redis通用命令

命令详情
select 1Redis默认拥有16个数据库,默认是0,切换到第二个数据库
DBSIZE查询当前库中key的数量
keys *获取所有的Key
flushdb清除当前数据库
flushall清除所有数据库
exists key查询某个key是是否存在
move key 1指定key移动到1号数据库
expire key 10指定key 10秒 后过期
ttl key查看key还有多久过期
type key查看key是什么类型

四、五种数据结构类型

(1).String类型

  •  string类型的数据存储是最简单的key-value存储;
命令详情
set name  wang设置key为name值为wang
get name获取key为name的值
append name test拼接key为name的值: wangtest
strlen name        获取key为name的值长度
incr num设置key为num的值加1
decr num设置key为num的值减1
incrby num 10设置key为num的值加10
decrby num 10设置key为num的值减10
getrange name 0 3截取下标为0-3的字符,例如:abcdef,截取后abcd
setrange name 1 000从下标为1进行替换字符串,例如:abcdef,替换后a000efg
setex name 10 wang设置key为name的值为wang,10秒后过期
setnx age 18如果age不存在,则设置age为18,如果存在则失败

mset k1 v1 k2 v2

一次性设置多个值

mget k1 k2 

一次性取多个值
msetnx k1 v1 k3 v3

如果k1存在,则k1和k4全部设置失败, 此为事务的原子性

getset remark test     如果remark不存在则设置并获取,如果存在则直接输入值

 实战场景:

  1. 缓存: 经典使用场景,把常用信息,字符串,图片或者视频等信息放到redis中,redis作为缓存层,mysql做持久化层,降低mysql的读写压力。
  2. 计数器:redis是单线程模型,一个命令执行完才会执行下一个,同时数据可以一步落地到其他的数据源。
  3. session:常见方案spring session + redis实现session共享

 (2).List集合类型

  •  List数据结构是链表结构、是双向的,是有序的,value可以重复,可以通过下标取出对应的value值,左右两边都能进行插入和删除数据。
命令详情
lpush zlist 1往一个值或多个插入列表的左边
rpush zlist 1往一个值或多个插入列表的右边
lrange zlist 0 5获取集合区间的值
lpop zlist从左边移除一个元素
rpop zlist从右边移除一个元素
lindex zlist 0通过下标获取集合中的某个值
llen zlist获取集合的长度
lrem zlist 1 2移除集合中一个为2的,精确匹配
ltrim zlist 1 2 截取集合中下标为1-2之间的元素,并覆盖原来的集合
lset zlist 0 test        更新集合中下标是0的值,不存在则报错
linsert zlist before 元素  某个值在集合中给某个元素前新增一个值
linsert zlist after 元素  某个值在集合中给某个元素后新增一个值

实战场景:

  1. 消息队列:reids的链表结构,可以轻松实现阻塞队列,可以使用左进右出的命令组成来完成队列的设计。
  2. 文章列表或者数据分页展示的应用,每一个用户都有自己的文章列表,而且当文章多时,都需要分页展示,这时可以考虑使用redis的列表,列表不但有序同时还支持按照范围内获取元素,可以完美解决分页查询功能。大大提高查询效率。

 (3).Set集合类型

  • 不允许有重复的元素,
  • 集合中的元素是无序的,不能通过索引下标获取元素,
  • 支持集合间的操作,可以取多个集合取交集、并集、差集。
命令详情
sadd zset name往集合中添加一个元素
smembers zset查询集合中所有元素
srandmember zset 1随机从集合中抽出1个元素(数字可改)
spop zset随机删除集合中的某个元素
smove zset 2zset name移动zset集合中的name到2zset集合中
sdiff 2zset zset两个集合中的差集
sinter 2zset zset两个集合中的并集和去重

实战场景 :

  1. 标签(tag),给用户添加标签,或者用户给消息添加标签,这样有同一标签或者类似标签的可以给推荐关注的事或者关注的人
  2. 点赞,或点踩,收藏等,可以放到set中实现

 (4).Hash集合类型

  •   是一个 String 类型的 field-value(键值对) 的映射表,特别适合用于存储对象
命令详情
hset zhash name zhangsan往集合中新增键值对
hget zhash name从集合中获取值
hmset zhash name zhangsan age 18同时往集合中添加多个值
hgetall zhash获取集合中所有键值对
hdel zhash name从集合中删除指定的key
hlen zhash获取集合的长度
hexists zhash name判断集合中是否存在
hkeys zhash 获取集合中所有的值
hincrby zhash age 1指定key增量
hsetnx zhash name zhangsan如果存在则失败,不存在则创建值

  实战场景:

  1. 缓存: 能直观,相比string更节省空间,的维护缓存信息,如用户信息,视频信息等。

 (5).ZSet集合类型

  • 有序集合和集合有着必然的联系,保留了集合不能有重复成员的特性
  • 有序集合中的元素是可以排序的,它给每个元素设置一个分数,作为排序的依据。
命令详情
zadd zzset 1 first添加一个值
zadd zzset 2 second 3 third 4 four添加多个值
zrangebyscore zzset -inf +inf集合中从小到大排序(-inf:负无穷, +inf:正无穷)
zrangebyscore zzset -inf +inf withscores从小到大排序并输出键值
zrangebyscore zzset -inf 1 withscores指定负无穷到1的范围
zrem zzset four移除集合中指定的元素
zcard zzset查看集合中元素个数
 zrevrange zzset 1 2反转指定范围

实战场景:

  1. 排行榜:有序集合经典使用场景。例如小说视频等网站需要对用户上传的小说视频做排行榜,榜单可以按照用户关注数,更新时间,字数等打分,做排行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值