到目前为止,Redis 支持的键值数据类型如下:

字符串(String)

哈希(Map)

列表(list)

集合(sets)

有序集合(sorted sets)

 

1. String 字符串类型

string是redis最基本的类型,一个key对应一个value。

string类型是二进制安全的。意思是redis的string可以包含任何数据。比如jpg图片或者序列化的对象 。

string类型是Redis最基本的数据类型,一个键最大能存储512MB。

String 命令:

赋值与取值 set key value / get key

>set name zhangzhi

ok

>get name

"zhangzhi"

当字符串值为整数时,incr命令可递增键值
>set a 1

ok
>incr a

(integer) 2

键不存在时,默认键值为0
>incr b

(integer) 1

Incrby 和incr类似,但是可指定一次增加的值
>incrby c 10

(integer) 10
decr 和decrby 减少整数,incrbyfloat增加指定的浮点数,append向尾部追加值,如果键不存在则值为指定value
>set d hello

ok
>append d world

(integer) 10 # append 命令返还字符串长度 “helloworld” 长度为10

strlen key 获取字符串长度
>strlen d

(integer) 10
同时获取(mget)/设置(mget)多个键值

>mset a valuea b valueb

>mget a b

2. Hashes 哈希

哈希的键值也是一种字典结构,其存储了字段和字段值的映射,特别社和存储对象。但字段值只能是字符串,散列类型不能嵌套其他的数据类型。

例子:

>hset user:1 name zhang    #赋值

>hget user:1 name                #取值

>hmset user:1 name zhangzhi age 29 address beijng #赋多值

>hmget user:1 name age #根据keys获取多个值

>hgetall user:1  #获取全部值

>hexists user:1 address #判断字段是否存在

>hsetnx user:1 address Beijing # 当字段不存在时赋值

>hdel user:1 age  #删除字段

>hincrby user:1 age 1 # 增加数字,类似incrby ,散列没有incr

>hkeys user:1 #获取字段名

>hvals user:1  #获取字段值

>hlen user:1 # 获取字段数量

 

3. 列表(Lists)
Redis列表是简单的字符串列表,按照插入顺序排序。 你可以添加一个元素到列表的头部(左边)或者尾部(右边)。
LPUSH命令插入一个新元素到列表头部,而RPUSH命令 插入一个新元素到列表的尾部。当 对一个空key执行其中某个命令时,将会创建一个新表。列表最多可存储 2的32次方 – 1个 元素 (4294967295, 每个列表可存储40多亿)。
例子:
>lpush list:1 a #创建列表list:1 并插入a

>rpush list:1 b #右边插入b

>lrange list:1 0 10 # 获取list:1 索引从0到10的元

>lpop list:1 #左边弹出元素

>rpop list:1 #右边弹出元素

>llen list:1 # 列表中元素的个数

>lrem list:1 2 a #删除列表中指定的值 2为数量

>linde list:1 0 # 获得指定索引的元素值

>lset list:1 0 2 #设置指定索引的元素值

>ltrim list1 2 4 #删除指定索引范围之外的所有元素

>linsert list1 before 4 99      #Linsert 命令用于在列表的元素前或者后插入元素。 当指定元素不存在于列表中时,不执行任何操作。 当列表不存在时,被视为空列表,不执行任何操作。 如果 key 不是列表类型,返回一个错误。
>rpoplpush list1 list2           #rpoplpush 命令用于移除列表的最后一个元素,并将该元素添加到另一个列表并返回。

4. Set(集合)

Set是string类型的无序集合。集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。
例子:
>sadd set:1 1 2 #已经存在集合中的元素忽略

>srem set:1 2 3

>smembers set:1

>sismember set:1 4 #判断元素是否在集合中

>sdiff set:1 set:2 #集合间差集

>sinter set:1 set:2 # 集合交集

>sunion set:1 set:2 # 集合并集

5. 有序集合(Sorted sets)

Redis有序集合和Redis集合类似,它们的差别是,每个有序集合 的成员都关联着一个评分,这个评分用于把有序集 合中的成员按最低分到最高分排列。
例子:
>zadd zset:1 0 redis

>zadd zset:1 1 monogdb

>zadd zset:1 2 mysql

>zrangebyscore zset:1 0 1000

>zscore zset:1 mysql #获取元素分数

>zrange zset:1 0 -1 withscores

Redis 键值数据类型及基本操作的更多相关文章

  1. redis键值操作

    1.1. redis键值操作 1.1.1. keys patten 查询相应的key 可以精确的查,也可以模糊的查 1.1.1.1. 通配符:* ? [] 在redis里,模糊查询key的时候有3个通 ...

  2. redis 键值对 有效期设置

    redis 键值对 有效期设置redis中可以使用expire命令设置一个键的生存时间, 到时间后redis会自动删除它<-----> 类比于javaweb系统临时数据 过期删除功能 ex ...

  3. Redis 中的数据类型及基本操作

    Redis 内置的数据类型有 5种:字符串String.哈希Hash.列表List.集合Set.有序集合ZSet 字符串类型 String 是 Redis 中最基本的类型,一个 key 对应着一个 v ...

  4. 7.Redis键值对数据库

    1.Redis的安装以及客户端连接 安装:apt-get install redis-server 卸载:apt-get purge --auto-remove redis-server 启动:red ...

  5. Redis键值设计(转载)

    参考资料:https://blog.csdn.net/iloveyin/article/details/7105181 丰富的数据结构使得redis的设计非常的有趣.不像关系型数据库那样,DEV和DB ...

  6. python 对redis 键值对的操作

    我们可以将Redis中的Hashes类型看成具有String Key和String Value的键值对容器.类似python中的dict,javascript的jaon,java 的map,每一个Ha ...

  7. spring中订阅redis键值过期消息通知

    1.首先启用redis通知功能(ubuntu下操作):编辑/etc/redis/redis.conf文件,添加或启用以下内容(过期通知): notify-keyspace-events Ex 或者登陆 ...

  8. 【LAMP整合Redis键值缓存为库分担压力】

    LAMP+ redis 架构图: 安装phpredis扩展 Php主配置文件引入redis库文件 Redis扩展 // 对httpd php扩展连接指定redis服务器

  9. 在linux系统中如何通过shell脚本批量设置redis键值对

    业务逻辑:批量设置redis中手机号的验证码为888888: 准备shell脚本如下:将18888888100~18888888110的手机号验证码设置为888888: #!/bin/bash ;i& ...

随机推荐

  1. Mishka and Contest(模拟水题)

    Mishka started participating in a programming contest. There are nn problems in the contest. Mishka' ...

  2. Java学习个人备忘录之线程间的通信

    线程间通讯多个线程在处理同一资源,但是任务却不同. class Resource { String name; String sex; } //输入 class Input implements Ru ...

  3. C语言 内存分配 地址 指针 数组 参数 实例解析

    . Android源码看的鸭梨大啊, 补一下C语言基础 ... . 作者 : 万境绝尘 转载请注明出处 : http://blog.csdn.net/shulianghan/article/detai ...

  4. JAVA单态设计模式

    核心--在类的内部把构造器私有化,同时在内部产生对象,并通过类.静态方法(static)返回实例化对象的引用   设计模式是在大量的实践总结和理论化之后优选的代码结果,编程风格,以及解决问题的思考方式 ...

  5. lintcode-156-合并区间

    156-合并区间 给出若干闭合区间,合并所有重叠的部分. 样例 给出的区间列表 => 合并后的区间列表: [ [ [1, 3], [1, 6], [2, 6], => [8, 10], [ ...

  6. LintCode-67.二叉树的中序遍历

    二叉树的中序遍历 给出一棵二叉树,返回其中序遍历. 样例 给出一棵二叉树 {1,#,2,3}, 返回 [1,3,2]. 挑战 你能使用非递归实现么? 标签 递归 二叉树 二叉树遍历 code /** ...

  7. TCP系列36—窗口管理&流控—10、linux下的异常报文系列接收

    在这篇文章中我们看一下server端在接收到异常数据系列时的处理,主要目的是通过wireshark示例对这些异常数据系列的处理有一个直观的认识,感兴趣的自行阅读相关代码和协议,这里不再进行详细介绍 在 ...

  8. 《学习OpenCV》课后习题解答6

    题目:(P104) 使用cvCmp()创建一个掩码.加载一个真实的图像.使用cvsplit()将图像分割成红,绿,蓝三个单通道图像. a.找到并显示绿图. b.克隆这个绿图两次(分别命名为clone1 ...

  9. 记一次dll强命名冲突事件

    一  问题的出现 现在要做一个net分布式平台,平台涉及多个服务之间调用问题,最基础的莫过于sso.由于我们的sso采用了wcf一套私有框架实现,另外一个webapi服务通过接口调用sso服务.由于s ...

  10. PAT L1-039 古风排版

    https://pintia.cn/problem-sets/994805046380707840/problems/994805091888906240 中国的古人写文字,是从右向左竖向排版的.本题 ...