01.Redis简介、Redis数据类型

目录

一、Redis简介

什么是Redis?

Redis简介

Redis的特点

性能

并发

安装部署Redis

 Redis命令介绍

Redis服务常用配置

Redis客户端配置

RDM可视化工具

二、Redis数据类型

String数据类型

String基本操作

自增自减操作

控制时效性 

String总结:

Hash数据类型

hash基本操作

hash扩展操作 

Hash总结:

List数据类型 

list基本操作

list扩展操作

list总结:

Set数据类型

set基本操作

​​​​​set扩展操作

Set总结

Sorted_set数据类型

sorted_set基本操作

sorted_set扩展操作

通用指令 

key基本操作

控制key的时效性

key的查询操作

key排序

 数据库通用操作


一、Redis简介

什么是Redis?

Redis简介

        Redis(Remote Dictionary Sever):远程字典服务,是一个开源的、采用ANSIC语言编写的,基于内存且支持持久化,高性能的Key-Value的NoSQL数据库(非关系型的数据库)

        Redis将数据写入内存,不通过I/O流读取数据,效率较高。区别于关系型数据库,Redis不存储数据之间的关系,存储数据简单,只关心如何存取,而不去维护数据之间的关系。

        Redis官网:Redis

Redis的特点

        在项目中使用Redis,主要是从两个角度去考虑:性能并发,这是当前互联网发展过程中首要考虑的两个重难题。

性能

        Redis是基于内存级别的缓存,能使请求快速从缓存中得到相应。相比传统请求数据库,响应速度大幅度提高。

并发

        在大并发的情况下,所有的请求直接访问数据库,数据库会出现连接异常的情况。由于Redis是基于内存级别的缓存,通过使用Redis进行缓冲操作,请求优先访问到redis请求数据,从而避免高并发情况下直接访问数据库。

安装部署Redis

        Redis官方只开发了基于Linux平台的Redis服务,是没有支持Windows系统的,但是微软自己就做了一个支持win64位系统的,并将其发布到了Github;

        Redis Windows版本下载地址:Releases · microsoftarchive/redis · GitHub

 Redis命令介绍

         下载好Redis,我们将其解压:

        

        1.启动Redis服务:
        

redis-server.exe redis.windows.conf

  也可以在cmd使用语句启动。

  2.双击redis-cli打开客户端窗口

Redis服务常用配置

常用命令控制:

        port:指定端
        database:数据库的数量
        logfile:Redis的日志文件名
        dir:设定当前服务文件保存位置,包含日志文件、持久化文件等
        requirepass:设置当前Redis服务的密码
        timeout:客户端连接的超时时间,单位:秒

Redis客户端配置

常用配置命令:

        -h:服务器的地址
        -p:服务器的端口
        -a:服务器的密码

1)使用默认连接配置
        ./redis-cli

2)指定参数启动
        ./redis-cli -h 服务器的地址 ./redis-cli -p 服务器的端口 ./redis-cli -h 服务器的地址 ./redis-cli -p 服务器的端口 -a 服务器的密码

RDM可视化工具

Redis Desktop Manager:简称RDM;是一款支持跨平台的可视化数据库管理工具。

官网:RESP.app (formerly Redis Desktop Manager) - GUI for Redis ® available on Windows, macOS, iPad and Linux.

使用RDM连接Redis服务:

 

Redis服务默认有16个数据库 。

二、Redis数据类型

String数据类型

String基本操作

String类型数据结构:

        

set:存数据
格式:set key value
示例:  

set name wangming

 

 get:取数据
格式:get key 
示例:

get name

 

 del:删除数据
格式:del key [key …]
示例:

​​​​​​​del name2 name3

 

 mset:一次存储多个key
​​​​​​​格式:mset key value [key value …]
示例:​​​​​​​

mset name wangming name2 lihua name3 dilireba name4 zhaoliying


 mget:一次取多个key
格式:mget key [key…]
示例:

mget name name2 name3 name4

 

strlen:获取字符个数
格式:strlen key
示例:

strlen name3

append:追加字符串(如果没有则新增)
格式:append key value
​​​​​​​示例:

append name3 .dilimulati

 setnx:存入key,如果这个key存在则返回0(false),代表存入失败,如果不存在则返回1(true),代表存入成功;
格式:setnx key value
示例:

自增自减操作

自增:incr
语法:incr key

控制步长自增:incrby
语法:incrby key increment

float类型自增:incrbyfloat (自增小数)
语法:incrbyfloat key increment

自减:decr
语法:decr key
 

控制步长自减:
语法:decrby key increment

控制时效性 

setex key seconds value        # 秒

psetex key milliseconds value        # 毫秒

String总结:

 String基本操作:
        set:存储值
        get:获取值
        del:删除数据(可以删除多个)
        mset:一次存储多个值
        mget:一次获取多个值
        strlen:获取字符个数
        append:追加字符串(如果没有则新增)
        setnx:存入key,如果这个key存在则返回0(false),代表存入失败,如果不存在则返回1(true),代表存入成功​​​​​​​ 

  自增自减操作:

        incr:自增
        incrby:控制步长自增
        incrbyfloat:自增小数
​​​​​​​        decr:自减
        decrby:控制步长自减

   控制时效性:

        setex key seconds value        # 秒
        psetex key milliseconds value        # 毫秒

Hash数据类型

hash类型的存储结构:

 hash类型的数据结构,底层采用hash表存储

hash基本操作

hset:添加/修改数据
格式:hset key filed value

 

hget:添加/修改数据
格式:hget key field

hdel:删除数据
格式:hdel key filed [filed…]

hmset:一次性添加/修改多个字段
格式:hmset key filed value [filed value ...]

 

hmget:一次性取多个数据
格式:hmget key filed [filed ...]

获取指定key的field的数量
格式:hlen key

hexists:判断指定的key中是否包含有指定的field(返回1[有]或0[没有])
格式:hexists key filed

hash扩展操作 

hkeys:获取key中所有的field
语法:hkeys key

 

hvals:获取key中所有的value
语法:hvals key

hgetall:获取指定key中所有的field以及value值
语法:hgetall key

hsetnx:如果指定key中有对应的field则返回0(false),如果没有则存对应的值进去
语法:hsetnx key filed value

Hash总结:

hash基本操作:
        hset:添加/修改数据
        hget:添加/修改数据
        hdel:删除数据
        hmset:一次性添加/修改多个字段
        hmget:一次性取多个数据
        hlen:获取指定key的field的数量
        hexists:判断指定的key中是否包含有指定的field(返回1[有]或0[没有])

hash扩展操作:
        hkeys:获取key中所有的field
        hvals:获取key中所有的value
        hgetall:获取指定key中所有的field以及value值
        hsetnx:如果指定key中有对应的field则返回0(false),如果没有则存对应的值进去

List数据类型 

在Redis中,List类型是按照插入顺序排序的字符串链表。Redis中的list类型采用的是双向链表。

list基本操作

添加/修改数据:lpush/rpush
语法:
lpush key value [value…] 添加到队列左侧
rpush key value [value…] 添加到队列右侧

 

获取数据:lrange
语法:lrange key start stop 从左边开始读取数据,从start索引查询到stop索引

根据指定的索引查询(从0开始):lindex
语法:lindex key index

Tips:lindex不支持反向查询 

获取并移除数据:lpop/rpop
语法:
lpop key 从队列左边移除一个元素并返回
rpop key 从队列右边移除一个元素并返回

删除前

删除后

list扩展操作

规定时间内获取并移除数据:blpop
语法:blpop key [key …] timeout 在timeout时间内取出key中的值

规定时间内移除list右边的一个元素到另一个list的左边,并将此元素返回:brpoplpush
语法:brpoplpush source destination timeout

 

移除指定数据:lrem
语法:lrem key count value 从list左边开始移除元素
        count:移除多少个
        value:移除什么元素

list总结:

list基本操作:
        添加/修改数据:lpush/rpush
        获取数据:lrange
        根据指定的索引查询(从0开始):lindex
        获取并移除数据:lpop/rpop 

list扩展操作
        规定时间内获取并移除数据:blpop
        规定时间内移除list右边的一个元素到另一个list的左边,并将此元素返回:brpoplpush
        移除指定数据:lrem

Set数据类型

我们可以将Set类型看作为没有排序的字符集合,和List类型不同的是,Set集合中不允许出现重复的元素。多个Sets之间的聚合计算操作,如sintersdiffsunion等操作。

set基本操作

添加数据:sadd
语法:sadd key member [member …]

sadd nums 1 2 3 4 5 6 7

读取全部数据:smembers
smembers key

smembers nums

 

删除数据:srem
srem key member [member …]

srem nums 1 3 5 7

获取集合中元素的个数:scard
scard key

scard nums

 

判断集合中是否包含指定的数据:sismember
sismember key member

sismember nums 1

 

​​​​​set扩展操作

在指定的key中随机获取几个个值
格式:srandmember key [count]

srandmember nums 3

 ​​​​​​​​​​​​​​

在指定的key中随机获取几个值,并将这几个值移除
spop key [count]

spop nums 3

 

获取两个集合的交、并、差集
        sinter key [key ...]            # 交集
        sunion key [key ...]            # 并集
        sdiff key [key ...]                # 差集

sinter num1 num2
sunion num1 num2

sdiff num1 num2 

获取两个集合的交、并、差集存储到指定集合中
sinterstore destination key1 [key2]        # 交集
sunionstore destination key1 [key2]        # 并集
sdiffstore destination key1 [key2]        # 差集

sinterstore temp1 num1 num2

sunionstore temp2 num1 num2

 

sdiffstore temp3 num1 num2

 

移动集合中的指定元素到另一个集合
格式:​​​​​​​smove source destination member
        source:源集合
        destination:目标集合
        member:移动的元素

smove num1 num2 2

Set总结

set基本操作:
        添加数据:sadd
        读取全部数据:smembers
        删除数据:srem
        获取集合中元素的个数:scard
        判断集合中是否包含指定的数据:sismember

set扩展操作:

        在指定的key中随机获取几个个值
        格式:srandmember key [count]

        在指定的key中随机获取几个值,并将这几个值移除
        spop key [count]

        移动集合中的指定元素到另一个集合
        格式:​​​​​​​smove source destination member
 

Sorted_set数据类型

sorted_set基本操作

        添加数据:zadd
        zadd key score1 member1 [score2 member2]

zadd students 90 zs

zadd students 80 ls 85 ww 60 zl 70 tq

 

        读取数据:zrange/zrevrange
        ​​​​​​​zrange key start stop [WITHSCORES]
        zrevrange key start stop [WITHSCORES]
                withscores:是否显示分值
                zrevrange:将查询结果反转

zrange students 0 -1

zrevrange students 0 -1 withscores

 

        删除数据:zrem key member [member ...]​​​​​​​

zrem students zs zl

 

        根据分值筛选:zrangebyscore/zrevrangebyscore
        zrangebyscore key min max [WITHSCORES] [LIMIT offset count]
        zrevrangebyscore key max min [WITHSCORES] [LIMIT offset count]

                min:最小值(包含)
                max:最大值(包含)
                limit:限定查询结果(分页查询)
                        offset:起始索引(从0开始)
                        count:查询几条数据
                zrevrangebyscore:根据分值反转查询

 zrange students 0 -1 withscores

zrangebyscore students 60 95 withscores

查询集合总数量:zcard
zcard key

zcard students

根据分值范围查询集合总数量:zcount
zcount key min max

zcount students 60 80

sorted_set扩展操作

        取多个集合中的交集、并集:zinterstore/zunionstore
        zinterstore destination numkeys key [key ...]
        zunionstore destination numkeys key [key ...]

zinterstore temp1 3 num1 num2 num3

zinterstore首先取并集,然后把分数累加。

 

通用指令 

key基本操作

删除key

del key

 判断key是否存在

exists key

获取key的类型

type key

key 改名

rename key newkey 

控制key的时效性

为指定key设置有效期

expire key seconds
pexpire key milliseconds

获取key的有效时间 

ttl key            # 返回key的有效时间,单位秒
pttl key        # 返回key的有效时间,单位毫秒

        如果key没有设置有效期(永久存在),返回-1

        如果key不存在返回-2

·        如果key存在返回key的有效时间

 切换key从时效性转换为永久性

persist key

key的查询操作

查询key

keys pattern

查询匹配规则:

*:匹配任意数量的任意符号

?:匹配任意一个符号

[]:匹配一个指定符号

key排序

对所有key排序:只能对集合进行排序(list、sort、sorted-set)

SORT key [BY pattern] [LIMIT offset count] [ASC|DESC] [ALPHA] [STORE destination]

list排序示例:

 set排序示例:

zset排序示例: 

 数据库通用操作

切换数据库 

select num

select 0         # 切换到0数据库
select 1        # 切换到1数据库

数据清除

 dbsize            # 查看当前数据库共有多少个key
flushdb            # 清除当前数据库的所有数据
flushall        # 清除所有数据库的所有数据

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

易拉罐е

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

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

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

打赏作者

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

抵扣说明:

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

余额充值