SpringBoot学习之环境搭建篇(一)1.4 - Redis

目录

一、单机部署

1、下载Redis

1-1、Windows下载

1-2、Linux下载

1-3、最新版本下载

2、安装Redis

3、配置Redis参数

4、启动服务

5、未授权漏洞访问测试

6、常用口令

6-1、连接操作相关的命令

6-2、对value操作的命令

6-3、对String操作的命令

6-4、对List操作的命令

6-5、对Set操作的命令

6-6、对zset(sorted set)操作的命令

6-7、对Hash操作的命令


一、单机部署

1、下载Redis

1-1、Windows下载

http://download.redis.io/releases/redis-3.0.7.tar.gz

1-2、Linux下载

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

1-3、最新版本下载

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

2、安装Redis

# 解压下载的文件
tar -zxvf redis-3.0.7.tar.gz
# 移动文件到特定目录
mv redis-3.0.7 /app/redis/
# 进入/app/redis/
cd /app/redis/
# 预编译
make
# 执行安装
make install

# 新建一个文件夹昨晚存放日志和redis配置(为以后扩展集群使用)
mkdir /app/redis/cluster
# 进入redis-3.0.7文件目录下
cd /app/redis/redis-3.0.7
# 然后复制文件到指定的路径
cp redis.conf /app/redis/cluster/

3、配置Redis参数

# 进入/app/redis/cluster/路径,编辑文件redis.conf
vim redis.conf
## #############  修改配置文件中的下面选项(单机)  #############

# 端口号
port 6379
# 是否作为后台运行,yes表后台运行
daemonize yes
# 配置日志存储地址
logfile "/app/redis/cluster/logs/redis_6379.log"
# 是否以集群的方式运行,如果是,则取消注释【#】,目前是单击
# cluster-enabled yes
# cluster-config-file nodes.conf
# 节点不能被访问的间隔,超过就说明这个节点失败了
# cluster-node-timeout 5000
# 是否开启日志,默认为no,开启为yes
appendonly no
# 可以启动redis密码配置
# requirepass 123456

4、启动服务

# 进入目录
cd /app/redis/cluster
# 执行程序(配置了redis的环境变量时,可以直接用redis-server,不需要进入特定目录)
redis-server redis.conf
# 进入特定目录的启动方式
/app/redis/redis-3.0.7/src/redis-server /app/redis/cluster/redis.conf
# 使用命令进入redis环境中
/app/redis/redis-3.0.7/src/redis-cli -c -p 6379

5、未授权漏洞访问测试

说明:通过测试如果不设置密码就会被攻击,所以配置好redis后,必须设定一个比较复杂的密码,防止被暴力破解

5-1、攻击者、被攻击者都安装了redis

5-2、攻击者使用:./redis-cli -h ip(被攻击者的ip)登录;然后用ping,判断是否已登录成功,提示PONG说明是通的

5-3、关于漏洞复现与利用(转载):https://www.cnblogs.com/bmjoker/p/9548962.html

6、常用口令

6-1、连接操作相关的命令

exit:退出

quit:关闭连接(connection)

auth:简单密码认证

6-2、对value操作的命令

exists (key):确认一个key是否存在

del (key):删除一个key

type (key):返回值的类型

keys (pattern):返回满足给定pattern的所有key,pattern为*时,表示所有

randomkey:随机返回key空间的一个key

rename (oldname, newname):将key由oldname重命名为newname,若newname存在则删除newname表示的key

dbsize:返回当前数据库中key的数目

expire key time:设定一个key的活动时间(秒)

ttl key:获得一个key的活动时间(秒)

select (index):按索引查询(进入不同的数据库0,1,2,3,4,5,6...15等等)

move (key, dbindex):将当前数据库中的key转移到有dbindex索引的数据库

flushdb:删除当前选择数据库中的所有key

flushall:删除所有数据库中的所有key

6-3、对String操作的命令

set (key, value):给数据库中名称为key的string赋予值value

get (key):返回数据库中名称为key的string的value

getset (key, value):给名称为key的string赋值,并返回上一次的value

mget (key1, key2,…, key N):返回库中(名称为key1,key2…)对应的value

setnx (key, value):如果不存在名称为key的string,则向库中添加string,名称为key,值为value

setex (key, time, value):向库中添加string(名称为key,值为value)同时,设定过期时间time

mset (key1, value1, key2, value2,…key N, value N):同时给多个string赋值,名称为key N 的string赋值value N(key N表示任意符合key的字符串)

msetnx (key1, value1, key2, value2,…key N, value N):如果所有名称为key i的string都不存在,则向库中添加string,名称key i赋值为value i

incr (key):名称为key的string增1操作,并返回变更后的值

incrby(key, integer):名称为key的string增加integer,并返回变更后的值

decr (key):名称为key的string减1操作,并返回变更后的值

decrby (key, integer):名称为key的string减少integer,并返回变更后的值

append (key, value):名称为key的string的值附加value,并返回字符串的长度(会把值从尾部拼接)

substr (key, start, end):返回名称为key的string的value的子串(不会改变key的值);start从0开始,end最大长度len - 1,若大于len - 1,结果不受影响。

6-4、对List操作的命令

rpush (key, value):在名称为key的list尾添加一个值为value的元素

lpush (key, value):在名称为key的list头添加一个值为value的 元素

llen (key):返回名称为key的list的长度

lrange (key, start, end):返回名称为key的list中start至end之间的元素(下标从0开始,下同),用于查看list的值

ltrim (key, start, end):截取名称为key的list,保留start至end之间的元素,会改变值

lindex (key, index):返回名称为key的list中index位置的元素

lset (key, index, value):给名称为key的list中index位置的元素赋值为value

lrem (key, count, value):删除count个名称为key的list中值为value的元素。count为0,删除所有值为value的元素,count>0从头至尾删除count个值为value的元素,count<0从尾到头删除|count|个值为value的元素。 

lpop (key):返回并删除名称为key的list中的首元素 rpop(key):返回并删除名称为key的list中的尾元素 

blpop (key1, key2,… key N, timeout):lpop命令的block版本。即当timeout为0时,若遇到名称为key i的list不存在或该list为空,则命令结束。如果timeout>0,则遇到上述情况时,等待timeout秒,如果问题没有解决,则对keyi+1开始的list执行pop操作。

brpop (key1, key2,… key N, timeout):rpop的block版本。参考上一命令。

rpoplpush (srckey, dstkey):返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部

6-5、对Set操作的命令

sadd (key, member):向名称为key的set中添加元素member

srem (key, member) :删除名称为key的set中的元素member

spop (key) :随机返回并删除名称为key的set中一个元素

smove (srckey, dstkey, member) :将member元素从名称为srckey的集合移到名称为dstkey的集合

scard (key) :返回名称为key的set的基数

sismember (key, member) :测试member是否是名称为key的set的元素

sinter(key1, key2,…key N) :求交集

sinterstore (dstkey, key1, key2,…key N) :求交集并将交集保存到dstkey的集合

sunion (key1, key2,…key N) :求并集

sunionstore (dstkey, key1, key2,…key N) :求并集并将并集保存到dstkey的集合

sdiff (key1, key2,…key N) :求差集

sdiffstore (dstkey, key1, key2,…key N) :求差集并将差集保存到dstkey的集合

smembers (key) :返回名称为key的set的所有元素

srandmember (key) :随机返回名称为key的set的一个元素

6-6、对zset(sorted set)操作的命令

zadd (key, score, member):向名称为key的zset中添加元素member,score用于排序。如果该元素已经存在,则根据score更新该元素的顺序。score和member必须是数字格式

zrem (key, member) :删除名称为key的zset中的元素member

zincrby (key, increment, member) :如果在名称为key的zset中已经存在元素member,则该元素的score增加increment;否则向集合中添加该元素,其score的值为increment

zrank (key, member) :返回名称为key的zset(元素已按score从小到大排序)中member元素的rank(即index,从0开始),若没有member元素,返回“nil”

zrevrank (key, member) :返回名称为key的zset(元素已按score从大到小排序)中member元素的rank(即index,从0开始),若没有member元素,返回“nil”

zrange (key, start, end):返回名称为key的zset(元素已按score从小到大排序)中的index从start到end的所有元素

zrevrange (key, start, end):返回名称为key的zset(元素已按score从大到小排序)中的index从start到end的所有元素

zrangebyscore (key, min, max):返回名称为key的zset中score >= min且score <= max的所有元素 

zcard (key):返回名称为key的zset的基数 zscore(key, element):返回名称为key的zset中元素element的

6-7、对Hash操作的命令

hset (key, field, value):向名称为key的hash中添加元素field<—>value,如果存在field,会改变value值,但是返回0,不存在则添加,返回1

hget (key, field):返回名称为key的hash中field对应的value

hmget (key, field1, …,field N):返回名称为key的hash中field i对应的value

hmset (key, field1, value1,…,field N, value N):向名称为key的hash中添加元素field i<—>value i

hincrby (key, field, integer):将名称为key的hash中field的value增加integer

hexists (key, field):名称为key的hash中是否存在键为field的域

hdel (key, field):删除名称为key的hash中键为field的域

hlen (key):返回名称为key的hash中元素个数

hkeys (key):返回名称为key的hash中所有键

hvals (key):返回名称为key的hash中所有键对应的value

hgetall (key):返回名称为key的hash中所有的键(field)及其对应的value

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员的微笑

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值