1.字符串(string)

1.1设置值
set key value [ex seconds] [px milliseconds] [nx|xx]

例如:

127.0.0.1:6379> set hello world
OK
1.2获取值
127.0.0.1:6379> get hello
"world"

字符串类型的内部编码有3种:

  • int:8个字节的长整型。
  • embstr:小于等于39个字节的字符串。
  • raw:大于39个字节的字符串。
    Redis会根据当前值的类型和长度决定使用哪种内部编码实现。

2.哈希(hash)


hash由多个field构成,适合存储拥有多个属性的对象。

2.1 设置值
hset key field value

例如添加一个名字为tom的用户,user为key,name为field

127.0.0.1:6379> hset user name tom
(integer) 1

再为这个hash添加一个名为age的field

127.0.0.1:6379> hset user age 13
(integer) 1
2.2 获取值
hget key field

例如获取用户的名字

127.0.0.1:6379> hget user name
"tom"

获取用户的年龄

127.0.0.1:6379> hget user age
13

3.list


list是一个类似数组的有序线性结构,允许存储重复元素。

3.1添加操作
  • 从右边添加元素
    rpush key value [value ...]
    从右边向左插入三个元素a、b、c示例:
127.0.0. 1:6379> rpush listkey c b a
(integer) 3

此时名为listkey的list存储的元素如下:

127.0.0.1:6379> lrange listkey 0 -1
1) "c"
2) "b"
3) "a"
  • 从左边添加元素
    lpush key value [value ...]
    从左向右添加元素示例:
127.0.0. 1:6379> lpush listkey c b a
(integer) 3
3.2查找元素
  • 获取指定索引下标元素
lindex key index
  • 获取列表长度
127.0.0.1:6379> llen listkey
(integer) 4
3.3删除元素
  • 将列表最左侧的一个元素弹出
lpop listkey
  • 将列表最右侧的一个元素弹出
rpop listkey

其余操作可参考这张命令表:

4.集合(set)

set可以用来保存多个字符串元素,无序,不允许重复。

4.1添加元素

sadd key element [element ...]

127.0.0.1:6379> sadd myset a b c
(integer) 3127.0.0.1:6379> sadd myset a b
(integer) 0
4.2 删除元素

srem key element [element ...]
返回删除元素个数

127.0.0.1:6379> srem myset a b
(integer) 2
127.0.0.1:6379> srem myset hello
(integer) 0
4.3 计算元素个数

scard的时间复杂度为O(1),它不会遍历集合所有元素,而是直接用
Redis内部的变量,例如:

127.0.0.1:6379> scard myset
(integer) 1
4.4 判断元素是否在集合中

sismember key element
如果给定元素element在集合内返回1,反之返回0,例如:

127.0.0.1:6379> sismember myset c
(integer) 1
4.5 从集合随机弹出元素

spop key
spop操作可以从集合中随机弹出一个元素,例如下面代码是一次spop
后,集合元素变为"d b a":

127.0.0.1:6379> spop myset
"c"
127.0.0.1:6379> smembers myset
1) "d"
2) "b"
3) "a"

srandmember和spop都是随机从集合选出元素,两者不同的是spop命令
执行后,元素会从集合中删除,而srandmember不会。

4.6 获取所有元素

smembers key

127.0.0.1:6379> smembers myset
1) "d"
2) "b"
3) "a"

smembers和lrange、hgetall都属于比较重的命令,如果元素过多存在阻
塞Redis的可能性,建议使用sscan来完成。

5.有序集合(zset)

有序集合在set上增加了排序的特性,依然不允许重复元素。
有序集合排序靠的不是索引下标,而是每个元素的分数(score)。zset十分适合用来做排行榜。

5.1添加元素
127.0.0.1:6379> zadd user:ranking 251 tom
(integer) 1
5.2 计算成员个数
127.0.0.1:6379> zcard user:ranking
(integer) 5
5.3 计算成员排名

zrank是从分数从低到高返回排名,zrevrank反之。例如下面操作中,tom
在zrank和zrevrank分别排名第5和第0(排名从0开始计算)。

127.0.0.1:6379> zrank user:ranking tom
(integer) 5
127.0.0.1:6379> zrevrank user:ranking tom
(integer) 0
5.3 删除成员
127.0.0.1:6379> zrem user:ranking mike
(integer) 1
5.4 返回指定分数范围的成员

zrangebyscore key min max [withscores] [limit offset count]
zrevrangebyscore key max min [withscores] [limit offset count]

其中zrangebyscore按照分数从低到高返回,zrevrangebyscore反之。例如
下面操作从低到高返回200到221分的成员,withscores选项会同时返回每个
成员的分数。[limit offset count]选项可以限制输出的起始位置和个数:

127.0.0.1:6379> zrangebyscore user:ranking 200 tinf withscores
1) "frank"
2) "200"
3) "tim"
4) "220"
127.0.0.1:6379> zrevrangebyscore user:ranking 221 200 withscores
1) "tim"
2) "220"
3) "frank"
4) "200"

转载于:https://www.cnblogs.com/powerjiajun/p/11530591.html

redis的5种数据结构和基本操作相关推荐

  1. Redis系列六、redis的五种数据结构和相关指令之Sorted Set

    本节中将介绍Redis支持的主要数据结构,以及相关的常用Redis命令.redis是一种基于键值对(key-value)的内存数据库,redis数据结构可以分为string.hash.list.set ...

  2. Redis系列五、redis的五种数据结构和相关指令之Set

    本节中将介绍Redis支持的主要数据结构中的set,以及相关的常用Redis命令. redis的五种数据结构和相关指令之set 集合set 集合(set)与列表类似,都是用来保存多个字符串,但集合与列 ...

  3. Redis系列四、redis的五种数据结构和相关指令之List

    本节中将介绍Redis支持的主要数据结构,以及相关的常用Redis命令.redis是一种基于键值对(key-value)的内存数据库,redis数据结构可以分为string.hash.list.set ...

  4. Redis系列三、redis的五种数据结构和相关指令之Hash

    本节中将介绍Redis支持的主要数据结构,以及相关的常用Redis命令.redis是一种基于键值对(key-value)的内存数据库,redis数据结构可以分为string.hash.list.set ...

  5. Redis系列二、redis的五种数据结构和相关指令之String

    redis是一种基于键值对(key-value)的内存数据库,redis数据结构可以分为string.hash.list.set.sorted set.本节中将介绍Redis支持的主要数据结构中的st ...

  6. Redis的五种数据结构原理分析(中)

    本章主要内容 简单介绍redis redis中的五种数据结构分析 应用场景分析 总结 关于Redis redis是一个开源的使用C语言编写的一个kv存储系统,是一个速度非常快的非关系远程内存数据库.它 ...

  7. redis的五种数据结构

    转载自 https://blog.csdn.net/fan510988896/article/details/71730696 reids官方命令集查询: http://redis.io/comman ...

  8. redis的七种数据结构

     [IT168 技术]长生剑.孔雀翎.碧玉刀.多情环.离别钩.霸王枪.拳头是古龙笔下的 七种武器,而本文打算将 Redis的几种使用方式 Strings.Hashs.Lists.Sets.Sort ...

  9. redis的五种数据结构及其使用场景

    1. String 常用命令: get.set.incr.decr.mget等 应用场景: String是最常用的数据类型,普通的key/value都可以归为此类,value其实不仅是String,也 ...

最新文章

  1. android 2.0 软件,Apeaksoft Android Toolkit
  2. java 读取webservice_java 调用webService的各种方法
  3. 测试教程网.unittest教程.2. 基本用法
  4. python fine函数_python find()函数
  5. 【vim】几种模式的切换
  6. Java Timer、TimerTask(定时任务)
  7. 吴征:只为寻找到杨澜
  8. 用C#语言在VS2010 WPF中编写的选择文件和选择文件夹的问题及其解决方案
  9. python装饰器两层和三层_2020 python学习第十六天————三层装饰器与迭代器
  10. 怎样批量修改照片分辨率?
  11. 基于SpringBoot的在线学生请假管理系统的设计与实现毕业设计源码
  12. nginx中的timeout超时设置,请求超时、响应等待超时等
  13. Oracle中dual表的用途介绍
  14. 我的木子走了,余生只剩下张长弓.....
  15. 基本保险金额和保额的意思和区别是什么?
  16. blender2.8 bpy.data.images.new创建的图片返回值撤回操作后丢失
  17. 阿里云过户找不到账号安全组ID问题
  18. Json 处理 - golang
  19. php特性之intval学习小记
  20. 如何禁止访问一个网站??

热门文章

  1. Matlab实用代码——定位文件位置,自动导入文件
  2. 亿贝html5,亿贝CALL
  3. 2018南华大学计算机学院,南华大学2019年排名第214位 较2018年下降32名
  4. solve stiffness matrix in matlab
  5. DE23 Use with Impulse Inputs
  6. 徐州工程学院计算机报名,2019年3月江苏徐州工程学院计算机等级考试报名时间...
  7. javafx项目_爬虫系列(5):JavaFx界面
  8. redmi airdots左右耳不串联怎么办_小米AirDots二代4小时售罄,告诉你戴狂卖3500万的耳机是什么感受...
  9. java none怎么用tomcat_在docker中部署tomcat并且部署java应用程序的步骤详解
  10. android上方导航条跳转页面,Native Navigation导航组件的使用说明