Redis基础

Redis是一个内存中的数据存储系统,支持多种数据结构如String、Hash、List、Set和SortedSet。文章介绍了如何通过SpringBoot集成Redis,以及Redis命令行客户端的使用,包括连接设置和基础命令。此外,还详细阐述了Redis的各种数据结构及其常用操作命令。
摘要由CSDN通过智能技术生成

radis是一个中间件,放置于服务器内存里,所以非常快,类似于hashmap,是key-value格式的

一种纯种数据库,没有关联表,纯纯的k-v

        <!--集成redis-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-redis</artifactId>
            <version>1.4.1.RELEASE</version>
        </dependency>
        <!--session共享-->
        <dependency>
            <groupId>org.springframework.session</groupId>
            <artifactId>spring-session-data-redis</artifactId>
        </dependency>

redis命令行客户端

语法:redis-cli [options] [commonds]

options:

1. -h 127.0.0.1 指定要链接的redis节点的ip地址,默认是127.0.0.1

2. -p 6379 指定要链接的redis结点的端口 默认是6379

3. -a password 指定redis的访问密码

其中commonds就是redis的操作命令

pingL与redis服务端做心跳测试 ,服务端正常返回pong

不指定commond时,会进入redis-cli的交互控制台

这种指定密码很危险 ,可以连上以后通过 AUTH password 来校验密码

Redis数据结构介绍

Redis是一个k-v的数据库 key一般是String类型,不过value多种多样

常见有

基本类型

1. String

2. Hash 哈希表

3. List 链表

4. Set 无序集合

5. SortedSet: 有序集合

特殊类型

6. GEO: 坐标

7. BitMap:

8. HyperLog:

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

可以在cli里面用 help @类型 查看命令

Redis通用命令

help @generic

1. KEYS 后面跟模板

根据模板查找key

KEYS * # 查找所有

KEYS a* # 查找以a开头

查看复合模版的所有key,不建议在生产环境上使用

2. DEL:删除一个指定的key

语法 DEL key [key...]

写一个删一个,写多个删多个,返回删除数量

3. EXISTS key [keys]

查看是否存在,可以一个可以多个,返回存在的数量

4. EXPIRE:给key一个有效日期,有效期到了key就会自动删除

语法: EXPIRE key time

默认是 -1 表示永久有效

如果时间到了就是-2

5. TTL 查看一个key的剩余有效期,

String类型

redis最简单的存储类型

其value时字符串,不过根据字符串格式不同又可以分成三类

1. string 普通字符串

2. int 整数类型,可做自增自减

3. float 浮点类型 可做自增自减

最大不超过512m

String常见命令

1. SET:添加或修改已经存在的一个String类型的键值对

2. GET:根据key获取String类型的value

3. MSET:批量添加多个String类型的键值对

4. MGET:根据多个key获取多个String类型的value

5. INCR:让一个整形的key自增1

6. INCRBY:让一个整型的key自增并指定步长,如:incrby num 2 让num自增2

7. INCRBYFLOAT:让一个浮点型的数字自增并制定步长

8. SETNX:添加一个String类型的键值对,前提是这个key不存在

9. SETEX:添加一个String类型的键值对,并指定其有效期

KEY的结构:Redis的key允许多个单词形成层级结构,多个单词之间用':'隔开,如

项目名:业务名:类型:id

如果Value是一个java对象,例如有一个User,则可以将对象序列化为JSON字符串后存储

|key | value|

|---——|------|

| zs:user:1 | {"id":1,"name":"tom","age":21} |

| zs:project:1 | {"id":1,"name":"jack","price":"1999"} |

Hash类型

Hash类型,也叫散列,其value是个无须字典,类似于java中的hashMap结构

如:String 结构存json很费劲

而hashMap存就方便很多

它的VALUE 分为 field 与 value ,一个KEY 的 VALUE 可以有多个字段和值

常见命令

1. HSET key field value : 添加或者修改hash类型key的field的值

2. HGET key field: 获取一个hash类型key的field的值

3. HMSET key [field value ...]: 批量添加多个hash类型的key的fied的值

4. HMGET key [field ...]: 批量获取多个hash类型key的field的值

5. HGETALL key: 获取一个hash类型的key中的所有的field和value

6. HKEYS: 获取一个hash类型的key中的所有的field

7. HVALS: 获取一个hash类型的key中的所有value

8. HINCRBY: 让一个hash类型key字段值自增并指定步长

9. HSETNX: 添加一个hash类型的key的field值,前提是不存在,否则不执行

List类型

Redis中的List类型与Java中的LinkedList类似,是个双向链表,支持正反查询

特点:有序,元素可重复,插入删除快,查询慢

常见命令

1. LPPUSH key element...:像列表左侧插入一个或多个元素

2. LPOP key:溢出并返回列表左侧的第一个元素,如果没有则返回bil

3. RPUSH key element:向列表右侧插入一个或多个元素

4. RPOP key:移除并返回列表右侧的第一个元素

5. LRANGE key star end:返回一段角标范围内的所有元素

6. BLPOP和BRPOP:与LPOP和RPOP类似,只不过再没有元素时等待指定时间,而不是返回nil

Set类型

Redis的Set结构与Java中的HashSet累死,可以看作时一个value为null的HashMap,因为是ha哈希表所以有以下特征:无需,元素不重复,查找快,支持交集,并集,差集等功能

常见命令:

单个集合:

1. SADD key member...: 向set中添加一个或多个元素

2. SREM key member...: 溢出set中的指定元素

3. SCARD key:返回set中的元素个数

4. SISMEMBER key member:判断一个元素是否在set中

5. SMEMBERS:获取set中的所有元素

多个集合

1. SINTET key1 key2 ...:求n个集合之间的交集

2. SDIFF key1 key2...:求k1对于后几个的差集

3. SUNION key1 key2...:求并集

SortedSet

Redis的SortedSet是一个可排序的set集合,与java中的TreeSet有些类似,但底层数据结构却差别很大,SortedSet中的每一个元素都带有一个score属性,可以基于score属性对元素排序,底层的实现是一个跳表(SkipList)加hash表

SortSet具备特性: 可排序,不重复,查询快

因为SortedSet的可排序特性,经常被用来实现排行榜这样的工能

常见命令

1. ZADD key score member:添加一个或多个元素到sortedset,如果已存在则更新其score值

2. ZREM key member:删除一个指定元素

3. ZSCORE key member:获取sortedset中的指定元素的score值

4. ZRANK key member:获取sortedset中的指定元素的排名

5. ZCARD key:获取sortedset中的元素个数

6. ZCOUNT key min max:统计score值在给定范围内的所有元素的个数

7. ZINCRBY key increment member:让sortedset中的指定元素自增,布长为指定的increment值

8. ZRANGE key min max:按照score排序后,获取指定排名范围内的元素

9. ZRANGEBYSCORE key min max:按照score排序后,获取指定score范围内元素

10. ZDIFF,ZINTER,ZUNION:差集,交集,并集

ps:所有的排名默认都是升序,如果要降序则再命令的Z后面家REV即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值