searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享

Redis分布式缓存数据库

2022-06-30 10:48:53
82
0

Redis是什么?

Redis 是一个 Key-Value 类型的分布式缓存数据库, 
以用作数据库、缓存、消息中间件等。

mst

Redis是什么?(分布式Key/Value结构的内存数据库,非关系型数据,NoSql数据库)

Redis数据库诞生的背景?(关系型数据库的访问压力比较大,本地内存不支持多服务实例共享)

Redis数据库的基本架构?(C/S,redis-cli,redis-server)

你了解Redis有哪些基础指令?(redis-cli,redis-server,exit,clear,type,expire,shutdown,help,?,keys,flushall,flushdb)

字符串类型有什么特点?(所有值都是字符串,空间动态分配,可以实现整数值的递增,递减,实现日志记录)

操作字符串类型(string)的常用指令?(set,get,strlen,append,mset,mget,incr,incrby,decr,decrby,del)

哈希类型(hash)数据有什么特性?(就是值还可以使用key/value结构存储,key无序,key相同值覆盖,存储对象方便)

操作哈希类型(hash)的常用指令?(hset,hget,hgetall,hexits,hdel,hkeys,hvals,hincrby,hmget)

列表类型(list)数据有什么特性?(链表,会记录添加的元素的顺序,元素允许重复,可以实现FIFO,FILO这些特性)

操作列表类型(list)类型的常用指令?(lpush,rpop,rpush,lpop,lrem,lindex,ltrim,lset,linsert,lrange,rpoplpush,lpos)

Set类型数据的特性?(散列,不记录元素添加顺序,不允许元素重复)

操作set类型的常用指令?(sadd,smembers,spop,smove,scard,sunion)

Redis中各种数据类型的应用场景?

版本及参考说明

Redis的次版本号(第一个小数点后的数字)为偶数的版本是稳定版本(2.4、2.6等),奇数为非稳定版本(2.5、2.7);Redis官方是不支持windows平台的,windows版本是由微软自己建立的分支,基于官方的Redis源码上进行编译、发布、维护的,所以windows平台的Redis版本要略低于官方版本。

Bootnb 相关:https://www.runoob.com/redis/redis-tutorial.html

Redis 官网:https://redis.io/

源码地址:https://github.com/redis/redis

Redis 在线测试:http://try.redis.io/

Redis 命令参考:http://doc.redisfans.com/

一、Redis基本操作(Docker 环境下的操作)

启动redis服务

docker start redis01 #底层也是通过redis-server启动,start单词后的redis01为容器名

docker 中查看redis 服务

docker ps

查看启动的redis进程信息

ps -ef|grep redis

root      3511     1  0 16:29 ?   00:00:01 redis-server *:6379

root      3515     1  0 16:29 ?   00:00:01 redis-server 127.0.0.1:6380

进入redis容器

docker exec -it redis01 bash #redis01 为容器名

登陆redis服务

        登陆本地redis

redis-cli

或者

redis-cli -p 6379    #这样默认连接的端口是6379,假如我们的端口不是6379,就需要重新指定

或者

redis-cli -p 6379 -a  password #-a后面为password/密码,这个位置不是写password这个单词,是要写我们具体的的密码——此操作需要开启redis.conf文件中的 requirepass选项

       登陆远程redis

redis-cli  -h ip  -p 6379  -a  password 

#其中ip不是写ip这个单词,是写具体的ip地址

#a后面为password/密码,这个位置不是写password这个单词,是要写我们具体的的密码

查看redis信息(首先登陆redis,然后输入info指令)

127.0.0.1:6379> info #查看当前redis节点的详细配置信息

清空redis屏幕(清除redis屏幕内容)

127.0.0.1:6379> clear

退出redis服务

127.0.0.1:6379> exit

关闭redis服务

127.0.0.1:6379> shutdown

可以基于help指令查看相关指令帮助

127.0.0.1:6379> help

redis-cli 2.8.19

Type: "help @<group>" to get a list of commands in <group>

      "help <command>" for help on <command>

      "help <tab>" to get a list of possible help topics

      "quit" to exit

127.0.0.1:6379> help type   #查看type指令的作用

 

  TYPE key

  summary: Determine the type stored at key

  since: 1.0.0

  group: generic

二、Redis数据存储操作

基于查看redis中的key

127.0.0.1:6379> keys *

(empty list or set)

    基于key/value形式存储数据

127.0.0.1:6379> set test1 123

OK

127.0.0.1:6379> set test2 ab

OK

127.0.0.1:6379> keys *

1) "test1"

2) "test2"

   清除redis中的数据

                删除指定key对应的数据

127.0.0.1:6379> del test1  #test1为key的名字

OK

    清除当前数据库数据

127.0.0.1:6379> flushdb

OK

清除所有数据库数据

127.0.0.1:6379> flushall

OK

  Key有效时间设计(实际工作中我们经常要控制redis中key的有效时长,例如秒杀操作的计时,缓存数据的有效时长等)

                Expire (设置生效时长-单位秒)

语法:EXPIRE key seconds

 

127.0.0.1:6379> set bomb tnt

OK

127.0.0.1:6379> expire bomb 10

(integer) 1

127.0.0.1:6379> ttl bomb

(integer) 5

127.0.0.1:6379> ttl bomb

(integer) 3

127.0.0.1:6379> ttl bomb

(integer) 3

127.0.0.1:6379> ttl bomb

(integer) 2

127.0.0.1:6379> ttl bomb

(integer) 1

127.0.0.1:6379> ttl bomb

(integer) -2

127.0.0.1:6379> ttl bomb

(integer) -2

 

127.0.0.1:6379>

其中,TTL查看key的剩余时间,当返回值为-2时,表示键被删除。
当 key 不存在时,返回 -2 。 当 key 存在但没有设置剩余生存时间时,返回 -1 。

    Persist (取消时长设置/即永久有效)

通过persist让对特定key设置的生效时长失效。

语法:PERSIST key

127.0.0.1:6379> set bomb tnt

OK

127.0.0.1:6379> expire bomb 60

(integer) 1

127.0.0.1:6379> ttl bomb

(integer) 49

127.0.0.1:6379> persist bomb

(integer) 1

127.0.0.1:6379> ttl bomb

(integer) -1

127.0.0.1:6379>

其中,设置新的数据时需要重新设置该key的生存时间,重新设置值也会清除生存时间。

 pexpire (单位毫秒)

pexpire 让key的生效时长以毫秒作为计量单位,这样可以做到更精确的时间控制。例如,可应用于秒杀场景。

语法:PEXPIRE key milliseconds

127.0.0.1:6379> set bomb tnt

OK

127.0.0.1:6379> pexpire bomb 10000

(integer) 1

127.0.0.1:6379> ttl bomb

(integer) 6

127.0.0.1:6379> ttl bomb

(integer) 3

127.0.0.1:6379> ttl bomb

(integer) -2

127.0.0.1:6379>

三、Redis常用数据类型

1、String类

1)incr/incrby——递增

当存储的字符串是整数时,redis提供了一个实用的命令INCR,其作用是让当前键值递增,并返回递增后的值。
语法:INCR key

127.0.0.1:6379> set num 1

(integer) 1

127.0.0.1:6379> incr num

(integer) 2

127.0.0.1:6379> keys *

1) "num"

127.0.0.1:6379> incr num

 

127.0.0.1:6379>

说明,如果num不存在,则自动会创建,如果存在自动+1。

指定增长系数

语法:INCRBY key increment

127.0.0.1:6379> incrby num 2

(integer) 5

127.0.0.1:6379> incrby num 2

(integer) 7

127.0.0.1:6379> incrby num 2

(integer) 9

127.0.0.1:6379>

2)decr/decrby——递减

减少指定的整数
DECR key 按照默认步长(默认为1)进行递减
DECRBY key decrement 按照指定步长进行递减

127.0.0.1:6379> incr num

(integer) 10

127.0.0.1:6379> decr num

(integer) 9

 

127.0.0.1:6379> decrby num 3

3)append——向尾部追加值

向尾部追加值。如果键不存在则创建该键,其值为写的value,即相当于SET key value。返回值是追加后字符串的总长度。
语法:APPEND key value

127.0.0.1:6379> keys *

1) "num"

2) "test1"

3) "test"

127.0.0.1:6379> get test

"123"

127.0.0.1:6379> append test "abc"

(integer) 6

127.0.0.1:6379> get test

"123abc"

 

127.0.0.1:6379>

4)strlen——字符串长度

字符串长度,返回数据的长度,如果键不存在则返回0。注意,如果键值为空串,返回也是0。
语法:STRLEN key

127.0.0.1:6379> get test

"123abc"

127.0.0.1:6379> strlen test

(integer) 6

127.0.0.1:6379> strlen tnt

(integer) 0

127.0.0.1:6379> set tnt ""

OK

127.0.0.1:6379> strlen tnt

(integer) 0

127.0.0.1:6379> exists tnt

(integer) 1

 

127.0.0.1:6379>

5)mset/mget——同时设置/获取多个键值

同时设置/获取多个键值
语法:MSET key value [key value …]
MGET key [key …]

127.0.0.1:6379> flushall

OK

127.0.0.1:6379> keys *

(empty list or set)

127.0.0.1:6379> mset a 1 b 2 c 3

OK

127.0.0.1:6379> mget a b c

1) "1"

2) "2"

3) "3"

127.0.0.1:6379>

6)mst

  • 博客的字数统计如何实现?(strlen)
  • 如何将审计日志不断追加到指定key?(append)
  • 你如何实现一个分布式自增id?(incr-雪花算法)
  • 如何实现一个博客的的点赞操作?(incr,decr)

2、Hash类型

3、List类型

4、Set类型

————————————————

版权声明:本文为CSDN博主「好运天天有,向我滚滚来」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/fhefhffg/article/details/123518870

0条评论
0 / 1000
天翼云文档找茬小助手
41文章数
7粉丝数
天翼云文档找茬小助手
41 文章 | 7 粉丝

Redis分布式缓存数据库

2022-06-30 10:48:53
82
0

Redis是什么?

Redis 是一个 Key-Value 类型的分布式缓存数据库, 
以用作数据库、缓存、消息中间件等。

mst

Redis是什么?(分布式Key/Value结构的内存数据库,非关系型数据,NoSql数据库)

Redis数据库诞生的背景?(关系型数据库的访问压力比较大,本地内存不支持多服务实例共享)

Redis数据库的基本架构?(C/S,redis-cli,redis-server)

你了解Redis有哪些基础指令?(redis-cli,redis-server,exit,clear,type,expire,shutdown,help,?,keys,flushall,flushdb)

字符串类型有什么特点?(所有值都是字符串,空间动态分配,可以实现整数值的递增,递减,实现日志记录)

操作字符串类型(string)的常用指令?(set,get,strlen,append,mset,mget,incr,incrby,decr,decrby,del)

哈希类型(hash)数据有什么特性?(就是值还可以使用key/value结构存储,key无序,key相同值覆盖,存储对象方便)

操作哈希类型(hash)的常用指令?(hset,hget,hgetall,hexits,hdel,hkeys,hvals,hincrby,hmget)

列表类型(list)数据有什么特性?(链表,会记录添加的元素的顺序,元素允许重复,可以实现FIFO,FILO这些特性)

操作列表类型(list)类型的常用指令?(lpush,rpop,rpush,lpop,lrem,lindex,ltrim,lset,linsert,lrange,rpoplpush,lpos)

Set类型数据的特性?(散列,不记录元素添加顺序,不允许元素重复)

操作set类型的常用指令?(sadd,smembers,spop,smove,scard,sunion)

Redis中各种数据类型的应用场景?

版本及参考说明

Redis的次版本号(第一个小数点后的数字)为偶数的版本是稳定版本(2.4、2.6等),奇数为非稳定版本(2.5、2.7);Redis官方是不支持windows平台的,windows版本是由微软自己建立的分支,基于官方的Redis源码上进行编译、发布、维护的,所以windows平台的Redis版本要略低于官方版本。

Bootnb 相关:https://www.runoob.com/redis/redis-tutorial.html

Redis 官网:https://redis.io/

源码地址:https://github.com/redis/redis

Redis 在线测试:http://try.redis.io/

Redis 命令参考:http://doc.redisfans.com/

一、Redis基本操作(Docker 环境下的操作)

启动redis服务

docker start redis01 #底层也是通过redis-server启动,start单词后的redis01为容器名

docker 中查看redis 服务

docker ps

查看启动的redis进程信息

ps -ef|grep redis

root      3511     1  0 16:29 ?   00:00:01 redis-server *:6379

root      3515     1  0 16:29 ?   00:00:01 redis-server 127.0.0.1:6380

进入redis容器

docker exec -it redis01 bash #redis01 为容器名

登陆redis服务

        登陆本地redis

redis-cli

或者

redis-cli -p 6379    #这样默认连接的端口是6379,假如我们的端口不是6379,就需要重新指定

或者

redis-cli -p 6379 -a  password #-a后面为password/密码,这个位置不是写password这个单词,是要写我们具体的的密码——此操作需要开启redis.conf文件中的 requirepass选项

       登陆远程redis

redis-cli  -h ip  -p 6379  -a  password 

#其中ip不是写ip这个单词,是写具体的ip地址

#a后面为password/密码,这个位置不是写password这个单词,是要写我们具体的的密码

查看redis信息(首先登陆redis,然后输入info指令)

127.0.0.1:6379> info #查看当前redis节点的详细配置信息

清空redis屏幕(清除redis屏幕内容)

127.0.0.1:6379> clear

退出redis服务

127.0.0.1:6379> exit

关闭redis服务

127.0.0.1:6379> shutdown

可以基于help指令查看相关指令帮助

127.0.0.1:6379> help

redis-cli 2.8.19

Type: "help @<group>" to get a list of commands in <group>

      "help <command>" for help on <command>

      "help <tab>" to get a list of possible help topics

      "quit" to exit

127.0.0.1:6379> help type   #查看type指令的作用

 

  TYPE key

  summary: Determine the type stored at key

  since: 1.0.0

  group: generic

二、Redis数据存储操作

基于查看redis中的key

127.0.0.1:6379> keys *

(empty list or set)

    基于key/value形式存储数据

127.0.0.1:6379> set test1 123

OK

127.0.0.1:6379> set test2 ab

OK

127.0.0.1:6379> keys *

1) "test1"

2) "test2"

   清除redis中的数据

                删除指定key对应的数据

127.0.0.1:6379> del test1  #test1为key的名字

OK

    清除当前数据库数据

127.0.0.1:6379> flushdb

OK

清除所有数据库数据

127.0.0.1:6379> flushall

OK

  Key有效时间设计(实际工作中我们经常要控制redis中key的有效时长,例如秒杀操作的计时,缓存数据的有效时长等)

                Expire (设置生效时长-单位秒)

语法:EXPIRE key seconds

 

127.0.0.1:6379> set bomb tnt

OK

127.0.0.1:6379> expire bomb 10

(integer) 1

127.0.0.1:6379> ttl bomb

(integer) 5

127.0.0.1:6379> ttl bomb

(integer) 3

127.0.0.1:6379> ttl bomb

(integer) 3

127.0.0.1:6379> ttl bomb

(integer) 2

127.0.0.1:6379> ttl bomb

(integer) 1

127.0.0.1:6379> ttl bomb

(integer) -2

127.0.0.1:6379> ttl bomb

(integer) -2

 

127.0.0.1:6379>

其中,TTL查看key的剩余时间,当返回值为-2时,表示键被删除。
当 key 不存在时,返回 -2 。 当 key 存在但没有设置剩余生存时间时,返回 -1 。

    Persist (取消时长设置/即永久有效)

通过persist让对特定key设置的生效时长失效。

语法:PERSIST key

127.0.0.1:6379> set bomb tnt

OK

127.0.0.1:6379> expire bomb 60

(integer) 1

127.0.0.1:6379> ttl bomb

(integer) 49

127.0.0.1:6379> persist bomb

(integer) 1

127.0.0.1:6379> ttl bomb

(integer) -1

127.0.0.1:6379>

其中,设置新的数据时需要重新设置该key的生存时间,重新设置值也会清除生存时间。

 pexpire (单位毫秒)

pexpire 让key的生效时长以毫秒作为计量单位,这样可以做到更精确的时间控制。例如,可应用于秒杀场景。

语法:PEXPIRE key milliseconds

127.0.0.1:6379> set bomb tnt

OK

127.0.0.1:6379> pexpire bomb 10000

(integer) 1

127.0.0.1:6379> ttl bomb

(integer) 6

127.0.0.1:6379> ttl bomb

(integer) 3

127.0.0.1:6379> ttl bomb

(integer) -2

127.0.0.1:6379>

三、Redis常用数据类型

1、String类

1)incr/incrby——递增

当存储的字符串是整数时,redis提供了一个实用的命令INCR,其作用是让当前键值递增,并返回递增后的值。
语法:INCR key

127.0.0.1:6379> set num 1

(integer) 1

127.0.0.1:6379> incr num

(integer) 2

127.0.0.1:6379> keys *

1) "num"

127.0.0.1:6379> incr num

 

127.0.0.1:6379>

说明,如果num不存在,则自动会创建,如果存在自动+1。

指定增长系数

语法:INCRBY key increment

127.0.0.1:6379> incrby num 2

(integer) 5

127.0.0.1:6379> incrby num 2

(integer) 7

127.0.0.1:6379> incrby num 2

(integer) 9

127.0.0.1:6379>

2)decr/decrby——递减

减少指定的整数
DECR key 按照默认步长(默认为1)进行递减
DECRBY key decrement 按照指定步长进行递减

127.0.0.1:6379> incr num

(integer) 10

127.0.0.1:6379> decr num

(integer) 9

 

127.0.0.1:6379> decrby num 3

3)append——向尾部追加值

向尾部追加值。如果键不存在则创建该键,其值为写的value,即相当于SET key value。返回值是追加后字符串的总长度。
语法:APPEND key value

127.0.0.1:6379> keys *

1) "num"

2) "test1"

3) "test"

127.0.0.1:6379> get test

"123"

127.0.0.1:6379> append test "abc"

(integer) 6

127.0.0.1:6379> get test

"123abc"

 

127.0.0.1:6379>

4)strlen——字符串长度

字符串长度,返回数据的长度,如果键不存在则返回0。注意,如果键值为空串,返回也是0。
语法:STRLEN key

127.0.0.1:6379> get test

"123abc"

127.0.0.1:6379> strlen test

(integer) 6

127.0.0.1:6379> strlen tnt

(integer) 0

127.0.0.1:6379> set tnt ""

OK

127.0.0.1:6379> strlen tnt

(integer) 0

127.0.0.1:6379> exists tnt

(integer) 1

 

127.0.0.1:6379>

5)mset/mget——同时设置/获取多个键值

同时设置/获取多个键值
语法:MSET key value [key value …]
MGET key [key …]

127.0.0.1:6379> flushall

OK

127.0.0.1:6379> keys *

(empty list or set)

127.0.0.1:6379> mset a 1 b 2 c 3

OK

127.0.0.1:6379> mget a b c

1) "1"

2) "2"

3) "3"

127.0.0.1:6379>

6)mst

  • 博客的字数统计如何实现?(strlen)
  • 如何将审计日志不断追加到指定key?(append)
  • 你如何实现一个分布式自增id?(incr-雪花算法)
  • 如何实现一个博客的的点赞操作?(incr,decr)

2、Hash类型

3、List类型

4、Set类型

————————————————

版权声明:本文为CSDN博主「好运天天有,向我滚滚来」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/fhefhffg/article/details/123518870

文章来自个人专栏
文章 | 订阅
0条评论
0 / 1000
请输入你的评论
0
0