Redis的常见命令

单线程:每个命令具备原子性

低延迟,速度快(基于内存、IO多路复用、良好的编码)

支持数据持久化

支持主从集群、分片集群

支持多语言客户端

2.Redis数据库介绍

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

3.Redis的通用命令

KEYS查看符合模板的所有key,KEYS *查询所有键,不建议在生产环境设备上使用,因为如果数据足够多,模糊匹配可能需要很长时间来查询,又因为Redis是一个单线程。因此不建议在主设备上使用。

DEL删除一个指定的key,DEL name,删除name,返回值是删除的数量,命令DEL k1 k2 k3 批量删除。

EXISTS:判断key是否存在

EXPIRE:给key设置有效期,有效期到期时该key会被自动删除

TTL:查看一个key的剩余有效期

4.String类型

String类型是Redis中最简单的存储类型。其value是字符串,不过根据字符串的格式不同,又可分为3类:

string:普通字符串

int:整形类型,可自增、自减操作

float:浮点类型,可做自增、自减操作

不管那种格式,底层都是字节数组形式存储,只不过编码方式不同。字符串类型的最大空间不能超过512M

常见命令

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

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

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

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

INCR:让一个整型的key自增1

INCRBY:让一个整型的key自增并指定步长

INCRBYFLOAT:让一个浮点类型的数字自增并指定步长

SETNX:添加一个String类型的键值对,前提是这个key不存在,否则不执行

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

5.key的结构

假如一个用户的id叫做id,一个商品的id也是id,除了更改名字来区别,好像没有别的法子了,因为Redis没有表的概念,那么用户和商品就会冲突,因此Redis的key允许有多个单词形成层级结构,多个单词之间用":"隔开,格式如下

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

6.Hash类型

Hash类型,也叫散列,其value是一个无序字典,类似于java的HashMap结构。

String结构是将对象序列化为JSON字符串后存储,当需要修改对象某个字段时很不方便。Hash结构可以将对象中的每个字段独立存储,可以针对单个字段做CRUD,非常人性化:

Hash类型命令

HSET key field value:添加或者修改hash类型的key的field的值(一次只能设置一个field)

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

HMSET:批量添加多个hash类型key的field的值

HMGET:批量获取多个hash类型key的field的值

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

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

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

HINCRBY:让hash类型key的字段自增并指定步长

HINCRBY user:3 age 2

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

7.List类型

Redis中的List类型于java的LinkedList类似,可以看做是一个双向链表,既可以支持正向索引也可以支持反向索引。

特征也于LinkedList类似:

有序

元素可以重复

插入和删除快

查询速度一般

List的常见命令有:

LPUSH key element ...:向列表左侧插入一个或多个元素(一直向左侧加元素)

LPOP key:移除并返回列表左侧的第一个元素,没有则返回null(先进后出栈的思想)

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

RPOP key:移除并返回右侧第一个元素(如果LPUSH存,RPOP取那就是队列的思想)

LRANGE key star end:返回这一段范围内的所有元素,start和end分别是list的索引,索引从0开始

BLPOP和BRPOP:于LPOP、RPOP类似,只不过在没有元素时等待指定时间,而不是直接返回nil

8.Set类型

Redis的Set结构与Java中的HashiSet类似,可以看做是一个value为null的HashMap。以为也是一个hash表,因此具备HashSet类似的特征:

无序

元素不可重复

查找快

支持交集、并集、差集等功能

Set类型的常见命令

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

SREM key member ...:移除set中指定元素

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

SISMEMBER key member:判断一个元素是否存在于set中,存在返回1,不存在返回0

SMEMBERS key:获取set中的所有元素

SINTER key1 key2 ...:求key1与key2的交集

SDIFF key1 key2 ...:求key1与key2的差集

SUNION key1 key2 ... :求key1与key2的并集

9.SortedSet类型

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

可排序性

元素不重复

查询速度快

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

SortedSet的常见命令有:

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

ZREM key member: 删除 sortedset中的一个指定元素

ZSCORE key member:获取sortedset中指定元素的socre的值

ZRANK key member: 获取sortedset中指定元素的排名ZREVRANK key member是倒序。

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

ZCOUNT key min max :统计score值在给定范围内的所有元素的个数,闭区间的min~max

ZINCRBY key increment member:让sortedset中的指定元素的score值自增,步长为指定的increment值

ZRANGE key min max:按照score排序后,取指定排名范围内的元素,min和max是索引从0开始

ZRANGEBYSCORE key min max:按照sore排序后,获取指定score范围内的元素,min和max是闭区间

ZDIFF、ZINTED、ZUNION:求差集、交集和并集

相关推荐
没书读了1 小时前
ssm框架-spring-spring声明式事务
java·数据库·spring
i道i1 小时前
MySQL win安装 和 pymysql使用示例
数据库·mysql
小怪兽ysl1 小时前
【PostgreSQL使用pg_filedump工具解析数据文件以恢复数据】
数据库·postgresql
wqq_9922502772 小时前
springboot基于微信小程序的食堂预约点餐系统
数据库·微信小程序·小程序
爱上口袋的天空2 小时前
09 - Clickhouse的SQL操作
数据库·sql·clickhouse
Oak Zhang3 小时前
sharding-jdbc自定义分片算法,表对应关系存储在mysql中,缓存到redis或者本地
redis·mysql·缓存
聂 可 以3 小时前
Windows环境安装MongoDB
数据库·mongodb
web前端神器3 小时前
mongodb多表查询,五个表查询
数据库·mongodb
门牙咬脆骨3 小时前
【Redis】redis缓存击穿,缓存雪崩,缓存穿透
数据库·redis·缓存
门牙咬脆骨3 小时前
【Redis】GEO数据结构
数据库·redis·缓存