Redis学习笔记(二)

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容Redis),内存型 2GB
简介: 五、Redis集合(set)5.1、简介5.2、常用命令5.3、简单测试六、Redis 哈希(Hash)6.1、简介6.2、常用命令6.3、简单测试七、Redis有序集合Zset7.1、简介7.2、常用命令7.3、简单测试

五、Redis集合(set)

5.1、简介

  • Redis set 对外提供的功能和List类似是一个列表功能,set可以自动排重
  • Redis set是string类型的无序集合添加、删除、查找的复杂度都是O(1)

5.2、常用命令

  • sadd 将一个或多个member元素加入到集合key中,已经存在的member元素将被忽略
  • smembers 取出该集合的所有值
  • sismember 判断集合是否含有该值,有1,没有0
  • scard 返回该集合的元素个数
  • srem...删除集合中的某个元素。
  • spop随机从该集合中吐出一个值。
  • srandmember随机从该集合中取出n个值,不会从集合中删除
  • smove value把集合中一个值从一个集合移动到另一个集合
  • sinter 返回两个集合的交集元素
  • sunion返回两个元素的并集元素
  • sdiff返回两个集合的差集元素(key1中的,不包含key2中的)

简单测试

127.0.0.1:6379> sadd set "hello" # 向set集合中添加元素
(integer) 1
127.0.0.1:6379> sadd set "chen"
(integer) 1
127.0.0.1:6379> sadd set "world"
(integer) 1
127.0.0.1:6379> SMEMBERS set    # 查看指定set的所有值
1) "world"
2) "chen"
3) "hello"
127.0.0.1:6379> SISMEMBER set hello # 判断某一个元素是否在set中,返回1代表存在,返回0代表不存在
(integer) 1
127.0.0.1:6379> SISMEMBER set world!
(integer) 0
127.0.0.1:6379> SCARD set  # 获取set集合中的元素个数
(integer) 3
127.0.0.1:6379> SREM set world  # 移除set集合中的指定的元素
(integer) 1
127.0.0.1:6379> SCARD set
(integer) 2
127.0.0.1:6379> SMEMBERS set
1) "chen"
2) "hello"
127.0.0.1:6379> SRANDMEMBER set  # 随机抽选出某一个元素[也可以是指定的个数]
"hello"
127.0.0.1:6379> SRANDMEMBER set
"chen"
127.0.0.1:6379> SPOP set # 随机删除一些set集合里的元素
"hello"
127.0.0.1:6379> SADD set hello world chen 
(integer) 3
127.0.0.1:6379> SADD set1 hello
(integer) 1
127.0.0.1:6379> SMOVE set set1 world # 将指定的元素从一个集合移动到另外一个集合中去
(integer) 1
127.0.0.1:6379> SMEMBERS set
1) "chen"
2) "hello"
127.0.0.1:6379> SMEMBERS set1
1) "world"
2) "hello"

数字集合类:

  • 差集
  • 交集
  • 并集
127.0.0.1:6379> SADD key1 a
(integer) 1
127.0.0.1:6379> SADD key1 b
(integer) 1
127.0.0.1:6379> SADD key1 c
(integer) 1
127.0.0.1:6379> SADD key2 d
(integer) 1
127.0.0.1:6379> SADD key2 c
(integer) 1
127.0.0.1:6379> SADD key2 e
(integer) 1
127.0.0.1:6379> SDIFF key1 key2  # 差集
1) "b"
2) "a"
127.0.0.1:6379> SINTER key1 key2 # 交集
1) "c"
127.0.0.1:6379> SUNION key1 key2 # 并集
1) "a"
2) "c"
3) "b"
4) "e"
5) "d"

六、Redis 哈希(Hash)

6.1、简介

redis hash 是一个键值对集合,是一个string类型的field和value的映射表,hash特别适合储存对象

6.2、常用命令

  1. hset 给集合的filed赋值i
  2. hget 从key1>集合取出
  3. hmset 批量设置hash的值
  4. hexists 查看哈希表key中,给定域filed是否存在。
  5. hkeys 列出该hash集合的所有field
  6. hvals 列出该hash集合的所有的value
  7. hincrby 为哈希表key中的域field的值加上增量 1 -1
  8. hsetnx 将哈希表key中的域field的值设置为value,当且仅当field不存在

6.3、简单测试

127.0.0.1:6379> HSET myhash filed1 value1  # set一个具体的 key-value
(integer) 1
127.0.0.1:6379> HGET myhash filed1 # 获取一个字段值
"value1"
127.0.0.1:6379> HMSET myhash filed1 value2 filed2 value3  # set 多个key-value
OK
127.0.0.1:6379> HMGET myhash filed1 filed2 # 获取多个值
1) "value2"
2) "value3"
127.0.0.1:6379> HGETALL myhash  # 获取全部的数据
1) "filed1" 
2) "value2"
3) "value3"
4) "value4"
5) "filed2"
6) "value3"
127.0.0.1:6379> HDEL myhash filed2 # 删除hash指定的key字段,对应的value值也被删除了
(integer) 1 
127.0.0.1:6379> HGETALL myhash
1) "filed1"
2) "value2"
3) "value3"
4) "value4"
127.0.0.1:6379> HMSET myhash filed1 hello filed2 world
OK
127.0.0.1:6379> HGETALL myhash
1) "filed1"
2) "hello"
3) "filed2"
4) "world"
127.0.0.1:6379> HLEN myhash  # 获取hash表的字段数量
(integer) 2
127.0.0.1:6379> HEXISTS myhash filed1 # 判断某一个字段是否存在,返回值1代表存在,否则是不存在
(integer) 1
127.0.0.1:6379> HEXISTS myhash filed3
(integer) 0
127.0.0.1:6379> HKEYS myhash # 获取所有的filed
1) "filed1"
2) "filed2"
127.0.0.1:6379> HVALS myhash # 获取所有的value  
1) "hello"
2) "world"
127.0.0.1:6379> HSET myhash f 1  # 指定增量
(integer) 1
127.0.0.1:6379> HINCRBY myhash f 1
(integer) 2
127.0.0.1:6379> HINCRBY myhash f -1
(integer) 1

七、Redis有序集合Zset

7.1、简介

Redis 有序集合zset与set 类似,是一个没有重复元素的字符串集合

与set不同的是zset是有序的,访问有序集合的中间元素也很快,因为能够使有序集合作为一个没有重复成员的智能列表

7.2、常用命令

  • zadd <key\><score1\><value1\><score2\><value2\> 将一个或多个member元素及其score值加入到有序集key中
  • zrange [WITHSCORES]

返回有序集合key中,下表在之间的元素,带WITHSCORES,可以让分数一起和值返回到结果集。

  • zrangebyscore key minmaxwithscores

返回有序集合key中,所有score值介于min和max之间(包括min和max)的成员。按score值递增次序排列

  • zrevrangebyscore key maxminwithscores 同上改为从大到小排列
  • zincrby 为元素的score加上增量
  • zrem 删除该集合下的,指定值的元素
  • zcount 统计该集合,分数区间内的元素个数
  • zrank 返回该值在集合中的排名,从0开始。

7.3、简单测试

127.0.0.1:6379> ZADD myset 1 one  # 添加一个值
(integer) 1
127.0.0.1:6379> ZADD myset 2 two 3 three # 添加多个值
(integer) 2
127.0.0.1:6379> ZRANGE myset 0 -1
1) "one"
2) "two"
3) "three"
127.0.0.1:6379> ZADD salary 2500 xiaohong
(integer) 1
127.0.0.1:6379> ZADD salary 5000 zhangsan 
(integer) 1
127.0.0.1:6379> ZADD salary 3000 chen
(integer) 1
127.0.0.1:6379> ZRANGEBYSCORE salary -inf +inf # 显示全部的用户 从小到大
1) "xiaohong"
2) "chen"
3) "zhangsan"
127.0.0.1:6379> ZREVRANGE salary 0 -1 # 显示全部的用户 从大到小 
1) "zhangsan"
2) "xiaohong"
127.0.0.1:6379> ZRANGEBYSCORE salary -inf +inf withscores  # 显示全部用户并且附带成绩
1) "xiaohong"
2) "2500"
3) "chen"
4) "3000"
5) "zhangsan"
6) "5000" 
127.0.0.1:6379> ZREM salary chen # 移除有序集合中的指定元素
(integer) 1
127.0.0.1:6379> ZRANGE salary 0 -1 # 获取有序集合中的个数
1) "xiaohong"
2) "zhangsan"
127.0.0.1:6379> ZADD myset 1 hello 2 world 3 chen
(integer) 3
127.0.0.1:6379> ZCOUNT myset 1 2 # 获取指定区间中的成员数量
(integer) 2
127.0.0.1:6379> ZCOUNT myset 1 3
(integer) 3
127.0.0.1:6379> 
相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
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时可能遇到的问题和解决方案。
126 1
redis学习四、可视化操作工具链接 centos redis,付费Redis Desktop Manager和免费Another Redis DeskTop Manager下载、安装
|
5月前
|
存储 NoSQL Redis
Redis系列学习文章分享---第十六篇(Redis原理1篇--Redis数据结构-动态字符串,insert,Dict,ZipList,QuickList,SkipList,RedisObject)
Redis系列学习文章分享---第十六篇(Redis原理1篇--Redis数据结构-动态字符串,insert,Dict,ZipList,QuickList,SkipList,RedisObject)
85 1
|
1月前
|
NoSQL Linux Redis
Docker学习二(Centos):Docker安装并运行redis(成功运行)
这篇文章介绍了在CentOS系统上使用Docker安装并运行Redis数据库的详细步骤,包括拉取Redis镜像、创建挂载目录、下载配置文件、修改配置以及使用Docker命令运行Redis容器,并检查运行状态和使用Navicat连接Redis。
251 3
|
1月前
|
NoSQL Java Redis
shiro学习四:使用springboot整合shiro,正常的企业级后端开发shiro认证鉴权流程。使用redis做token的过滤。md5做密码的加密。
这篇文章介绍了如何使用Spring Boot整合Apache Shiro框架进行后端开发,包括认证和授权流程,并使用Redis存储Token以及MD5加密用户密码。
31 0
shiro学习四:使用springboot整合shiro,正常的企业级后端开发shiro认证鉴权流程。使用redis做token的过滤。md5做密码的加密。
|
5月前
|
NoSQL Java Redis
Redis系列学习文章分享---第十八篇(Redis原理篇--网络模型,通讯协议,内存回收)
Redis系列学习文章分享---第十八篇(Redis原理篇--网络模型,通讯协议,内存回收)
84 0
|
5月前
|
存储 消息中间件 缓存
Redis系列学习文章分享---第十七篇(Redis原理篇--数据结构,网络模型)
Redis系列学习文章分享---第十七篇(Redis原理篇--数据结构,网络模型)
97 0
|
5月前
|
存储 NoSQL 算法
Redis系列学习文章分享---第十篇(Redis快速入门之附近商铺+用户签到+UV统计)
Redis系列学习文章分享---第十篇(Redis快速入门之附近商铺+用户签到+UV统计)
41 0
|
5月前
|
存储 NoSQL Redis
Redis系列学习文章分享---第九篇(Redis快速入门之好友关注--关注和取关 -共同关注 -Feed流实现方案分析 -推送到粉丝收件箱 -滚动分页查询)
Redis系列学习文章分享---第九篇(Redis快速入门之好友关注--关注和取关 -共同关注 -Feed流实现方案分析 -推送到粉丝收件箱 -滚动分页查询)
67 0
|
5月前
|
消息中间件 负载均衡 NoSQL
Redis系列学习文章分享---第七篇(Redis快速入门之消息队列--List实现消息队列 Pubsub实现消息队列 stream的单消费模式 stream的消费者组模式 基于stream消息队列)
Redis系列学习文章分享---第七篇(Redis快速入门之消息队列--List实现消息队列 Pubsub实现消息队列 stream的单消费模式 stream的消费者组模式 基于stream消息队列)
73 0
|
5月前
|
消息中间件 NoSQL Java
Redis系列学习文章分享---第六篇(Redis实战篇--Redis分布式锁+实现思路+误删问题+原子性+lua脚本+Redisson功能介绍+可重入锁+WatchDog机制+multiLock)
Redis系列学习文章分享---第六篇(Redis实战篇--Redis分布式锁+实现思路+误删问题+原子性+lua脚本+Redisson功能介绍+可重入锁+WatchDog机制+multiLock)
229 0
下一篇
无影云桌面