redis学习之redis基本数据类型以及Jedis

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: redis有5种基本数据类型,分别是String(字符串)、Hash(字典)、List(列表)、Set(集合)、Zset(有序集合),下面就分别来说一下这五种数据类型。

数据类型详解:


1、String:


二进制安全的数据类型,类似于Java中的Map,以key、value的形式存储数据。它有如下方法:


①、set和get方法:赋值和获取值

语法:

set key value

get key

例子:

set username tom

get username

②、del方法:删除指定的key

语法:

del key

例子:

del username

③、setnx方法:key不存在时进行设置,如果已有这个key就返回0

语法:

setnx key value

例子:

setnx age 22

如果有age这个key,就返回0,没有就进行设置

④、setex方法:设置有效期

语法:

setex key 有效期 value

例子:

setex color 10 red

设置color的有效期为10秒,10秒后color为nil

⑤、setrange方法:替换字符串

语法:

set key 从第几位开始替换 要替换的字符

例子:

set email 12356789@qq.com setrange email 9 gg

把qq替换成gg

⑥、mset和mget方法:一次设置或获取多个值

语法:

mset key1 value1 key2 value2

mget key1 key2

⑦、incr和decr方法:对某个值进行递增或递减

语法:

incr key

decr key

⑧、incrby和decrby方法:可以设置步长的递增和递减

语法:

incrby key 步长

decrby key 步长

⑨、append方法:追加字符串

语法:

append key 追加的内容

⑩、strlen方法:获取字符串长度

语法:

strlen key


2、Hash:


占用内存更少,方便存储对象。它有如下方法:


①、hset和hget方法:

语法:

官方:hset key field value

自己理解:hset hashname key value

hget hashname key

②、hmset和hmget:批量操作

语法:    hmset hashname key1 value1 key2 value2

hmget hashname key1 key2

③、hincrby和hdecrby:集合递增和递减

语法:

hincrby hashname key 步长

hdecrby name key 步长

④、hexists:是否存在key,存在就返回1,不存在返回0

语法:

hexists hashname key

⑤、hlen:返回集合中键的个数

语法:

hlen hashname

⑥、hdel:删除指定的key

语法:

hdel hashname key

⑦、hvals:返回指定hash里的所有value

语法:

hvals hashname

⑧、hgetall:返回hash里所有的key、value

语法:

hgetall hashname

3、List:

链表结构的集合,既可以做栈也可以做队列,它有如下方法:

①、lpush方法:从头部加入元素(栈),先进后出

语法:

lpush key value

例子:

lpush list1 "hello"

lpush list1 "world"

②、lrange方法:取出list中的元素,从start取到end

语法:

lrange key start end

例子:

lrange list1 0 -1

表示从头取到尾

③、rpush方法:从尾部加入元素(队列),先进先出

语法:

rpush key value

例子:

rpush list1 "hello"

④、linsert方法:插入元素

语法:

linsert key before value1 insertvalue

例子:

linsert list1 before "world" "hello"

表示在world前插入一个hello

⑤、lset方法:将指定下标的元素换掉

语法:

lset key 下标 "替换的内容"

例子:

lset list1 0 "haha"

表示把索引为0的元素替换成haha

⑥、lrem方法:删除若干个元素,返回删除的个数

语法:

lrem key 删除的个数 "删除的元素"

例子:

lrem list1 2 "b"

删除两个b

⑦、ltrim方法:保留指定索引范围内的值

语法:

ltrim key 索引1 索引2

例子:

ltrim list1 2 4

表示保留索引2到4的内容

⑧、lpop方法:从list头部删除元素,并返回删除元素

语法:

lpop key

⑨、rpop方法:从list尾部删除元素,并返回删除元素

语法:

rpop key

⑩、rpoplpush方法:删除key1中最后一个元素,然后把这个元素加到key2的第一个位置(key1和key2可以相同)

语法:

rpoplpush key1 key2

①①、lindex方法:返回list中指定索引的值

语法:

lindex key 索引

例子:

lindex list1 1

返回list1中第二个元素

①②llen方法:返回list中元素个数

语法:

llen key


4、Set:


无序不重复集合,通过hashtable实现。有如下方法:


①、sadd方法:添加元素

语法:

官方:sadd key member

自己理解:sadd setname value

例子:

sadd set1 haha

②、srem方法:删除set的元素

语法:

srem setname value

例子:

srem set1 haha

③、spop方法:指定一个set,随机删除其里面的元素并返回

语法:

spop setname

例子:

spop set1

④、sdiff方法:返回set1不同于set2的元素

语法:

sdiff setname1 setname2

⑤、sdiffstore方法:将set1不同于set2的元素存到set3中去

语法:

```sdiffstore setname1 setname2 setname3``‘

⑥、sinter方法:求set1和set2的交集

语法:

sinter setname1 setname2

⑦、sinterstore方法:把set1与set2的交集存到set3中

语法:

sinter setname1 setname2 setname3

⑧、sunIon方法:求set1与set2的并集(I是大写的i)

语法:

sunIon setname1 setname2

⑨、sunIonstore方法:把set1与set2的并集存入set3

语法:

sunIonstore setname1 setname2 setname3

⑩、smove方法:将set1中的某个元素移动到set2中

语法:

smove setname1 setname2 value

例子:

smove set1 set2 ee

表示将set1中的ee移动到set2中

①①、scard方法:查看set里的元素个数

语法:

scard setname

①②、sismember方法:判断某个元素是否为set中元素,是返回1,不是返回0

语法:

sismember setname value

例子:

sismember set1 haha

判断haha是不是set1中的元素

①③、srandmember方法:随机返回set中count个元素

语法:

srandmember setname count

例子:

srandmember set1 3

随机返回set1中3个元素


5、Zset:


和set的区别就是,Zset是有序的。它有如下方法:


①、zadd方法:添加元素,如果元素存在,就更新该元素顺序

语法:

zadd zsetname score value

例子:

zadd zset1 1 haha

表示添加haha这个元素,分数是1

②、zrem方法:删除zset中的元素

语法:

zrem zsetname value

例子:

zrem zset1 haha

③、zincrby和zdecrby方法:指定步长递增或递减

**语法: **

zincrby zsetname 步长 value

zdecrby zsetname 步长 value

④、zrank方法:返回某个元素的排序索引(从小到大排序)

语法:

zrank zsetname value

例子:

zrank zset1 haha

返回haha在zset1中的序号

⑤、zrevrank方法:返回排序索引(从大到小)

语法:

zrevrank zsetname value

⑥、zrangebyscore方法:查找分数在指定区间的数据并返回

语法:

zrangebyscore zsetname score1 score2 withscores

例子:

zrangebyscore zset1 1 4 withscores

返回分数在1到4之间的数据

⑦、zcard方法:返回zset中元素的个数

语法:

zcard zsetname

⑧、zcount方法:返回zset中指定分数区间中元素的个数

语法:

zcount zsetname score1 score2

⑧、zremrangebyrank:根据给定的索引区间删除数据

语法:

zremrangebyrank zsetname index1 index2

⑨、zremrangebyscore:根据给定的分数区间删除元素

语法:

zremrangebyscore zsetname score1 score2


Jedis


Jedis就是Java操作redis的一套API,所有方法都和上面介绍的数据类型方法一样,只需要new一个Jedis实例,传入redis所在的机器的ip以及redis服务的端口,然后用这个实例调方法即可。


总结:


redis有以上5大数据类型,每个类型都有若干的方法,学习时可以类比Java的集合进行学习。


以上内容属于个人学习笔记整理,如果错误,欢迎批评指正!




相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
14天前
|
存储 消息中间件 NoSQL
使用Java操作Redis数据类型的详解指南
通过使用Jedis库,可以在Java中方便地操作Redis的各种数据类型。本文详细介绍了字符串、哈希、列表、集合和有序集合的基本操作及其对应的Java实现。这些示例展示了如何使用Java与Redis进行交互,为开发高效的Redis客户端应用程序提供了基础。希望本文的指南能帮助您更好地理解和使用Redis,提升应用程序的性能和可靠性。
30 1
|
1月前
|
NoSQL 数据可视化 Linux
redis学习四、可视化操作工具链接 centos redis,付费Redis Desktop Manager和免费Another Redis DeskTop Manager下载、安装
本文介绍了Redis的两个可视化管理工具:付费的Redis Desktop Manager和免费的Another Redis DeskTop Manager,包括它们的下载、安装和使用方法,以及在使用Another Redis DeskTop Manager连接Redis时可能遇到的问题和解决方案。
123 1
redis学习四、可视化操作工具链接 centos redis,付费Redis Desktop Manager和免费Another Redis DeskTop Manager下载、安装
|
1月前
|
存储 消息中间件 NoSQL
Redis 数据类型
10月更文挑战第15天
37 1
|
1月前
|
NoSQL Linux Redis
Docker学习二(Centos):Docker安装并运行redis(成功运行)
这篇文章介绍了在CentOS系统上使用Docker安装并运行Redis数据库的详细步骤,包括拉取Redis镜像、创建挂载目录、下载配置文件、修改配置以及使用Docker命令运行Redis容器,并检查运行状态和使用Navicat连接Redis。
243 3
|
1月前
|
NoSQL Java Redis
shiro学习四:使用springboot整合shiro,正常的企业级后端开发shiro认证鉴权流程。使用redis做token的过滤。md5做密码的加密。
这篇文章介绍了如何使用Spring Boot整合Apache Shiro框架进行后端开发,包括认证和授权流程,并使用Redis存储Token以及MD5加密用户密码。
30 0
shiro学习四:使用springboot整合shiro,正常的企业级后端开发shiro认证鉴权流程。使用redis做token的过滤。md5做密码的加密。
|
1月前
|
存储 Prometheus NoSQL
大数据-44 Redis 慢查询日志 监视器 慢查询测试学习
大数据-44 Redis 慢查询日志 监视器 慢查询测试学习
25 3
|
1月前
|
NoSQL 关系型数据库 MySQL
Redis 事务特性、原理、具体命令操作全方位诠释 —— 零基础可学习
本文全面阐述了Redis事务的特性、原理、具体命令操作,指出Redis事务具有原子性但不保证一致性、持久性和隔离性,并解释了Redis事务的适用场景和WATCH命令的乐观锁机制。
241 0
Redis 事务特性、原理、具体命令操作全方位诠释 —— 零基础可学习
|
1月前
|
NoSQL Redis
redis学习五、错误总结,redis正常运行时后会出现一些bug 总结。
本文介绍了Redis在正常运行时可能遇到的一个错误,即无法进行磁盘持久化的问题,并提供了通过设置`stop-writes-on-bgsave-error`为`no`来解决这一问题的方案。
96 0
|
1月前
|
消息中间件 缓存 NoSQL
Redis 是一个高性能的键值对存储系统,常用于缓存、消息队列和会话管理等场景。
【10月更文挑战第4天】Redis 是一个高性能的键值对存储系统,常用于缓存、消息队列和会话管理等场景。随着数据增长,有时需要将 Redis 数据导出以进行分析、备份或迁移。本文详细介绍几种导出方法:1)使用 Redis 命令与重定向;2)利用 Redis 的 RDB 和 AOF 持久化功能;3)借助第三方工具如 `redis-dump`。每种方法均附有示例代码,帮助你轻松完成数据导出任务。无论数据量大小,总有一款适合你。
77 6
|
12天前
|
缓存 NoSQL 关系型数据库
大厂面试高频:如何解决Redis缓存雪崩、缓存穿透、缓存并发等5大难题
本文详解缓存雪崩、缓存穿透、缓存并发及缓存预热等问题,提供高可用解决方案,帮助你在大厂面试和实际工作中应对这些常见并发场景。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
大厂面试高频:如何解决Redis缓存雪崩、缓存穿透、缓存并发等5大难题
下一篇
无影云桌面