Redis 键值数据类型及基本操作
到目前为止,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 键值数据类型及基本操作的更多相关文章
- redis键值操作
1.1. redis键值操作 1.1.1. keys patten 查询相应的key 可以精确的查,也可以模糊的查 1.1.1.1. 通配符:* ? [] 在redis里,模糊查询key的时候有3个通 ...
- redis 键值对 有效期设置
redis 键值对 有效期设置redis中可以使用expire命令设置一个键的生存时间, 到时间后redis会自动删除它<-----> 类比于javaweb系统临时数据 过期删除功能 ex ...
- Redis 中的数据类型及基本操作
Redis 内置的数据类型有 5种:字符串String.哈希Hash.列表List.集合Set.有序集合ZSet 字符串类型 String 是 Redis 中最基本的类型,一个 key 对应着一个 v ...
- 7.Redis键值对数据库
1.Redis的安装以及客户端连接 安装:apt-get install redis-server 卸载:apt-get purge --auto-remove redis-server 启动:red ...
- Redis键值设计(转载)
参考资料:https://blog.csdn.net/iloveyin/article/details/7105181 丰富的数据结构使得redis的设计非常的有趣.不像关系型数据库那样,DEV和DB ...
- python 对redis 键值对的操作
我们可以将Redis中的Hashes类型看成具有String Key和String Value的键值对容器.类似python中的dict,javascript的jaon,java 的map,每一个Ha ...
- spring中订阅redis键值过期消息通知
1.首先启用redis通知功能(ubuntu下操作):编辑/etc/redis/redis.conf文件,添加或启用以下内容(过期通知): notify-keyspace-events Ex 或者登陆 ...
- 【LAMP整合Redis键值缓存为库分担压力】
LAMP+ redis 架构图: 安装phpredis扩展 Php主配置文件引入redis库文件 Redis扩展 // 对httpd php扩展连接指定redis服务器
- 在linux系统中如何通过shell脚本批量设置redis键值对
业务逻辑:批量设置redis中手机号的验证码为888888: 准备shell脚本如下:将18888888100~18888888110的手机号验证码设置为888888: #!/bin/bash ;i& ...
随机推荐
- UML设计(团队作业)
UML设计 一.团队信息 1.队名 读完文章再睡觉 2.团队成员的学号与姓名 学号 姓名 211606381 吴伟华(队长) 211606369 蔺皓雯 211606340 杨池宇 211606372 ...
- Android 开发 之 JNI入门 - NDK从入门到精通
NDK项目源码地址 : -- 第一个JNI示例程序下载 : GitHub - https://github.com/han1202012/NDKHelloworld.git -- Java传递参数给C ...
- Alpha冲刺——第二天
Alpha第二天 听说 031502543 周龙荣(队长) 031502615 李家鹏 031502632 伍晨薇 031502637 张柽 031502639 郑秦 1.前言 任务分配是VV.ZQ. ...
- open-stf 安装篇(linux)
OpenSTF 百度MTC的远程真机调试 Testin的云真机 腾讯WeTest的云真机 阿里MQC的远程真机租用 什么是OpenSTF? OpenSTF是一个手机设备管理平台,可以对手机进行远 ...
- title & abbr & tooltips
title & abbr & tooltips https://dmitrybaranovskiy.github.io/raphael/ <abbr title="Sc ...
- Codeforces Round #517 Div. 1翻车记
A:真的懵逼了.冷静了半天之后决定二分一下答案,然后先a安排上尽量小的再贪心地一个个扩大.40min才过.这个做法非常怂的以代码复杂度和时间复杂度为代价换取了比较稳的正确性,事实上由于1~n可以组合出 ...
- [Violet]天使玩偶
description Ayu 在七年前曾经收到过一个天使玩偶,当时她把它当作时间囊埋在了地下.而七年后 的今天,Ayu 却忘了她把天使玩偶埋在了哪里,所以她决定仅凭一点模糊的记忆来寻找它. 我们把 ...
- 【BZOJ5301】【CQOI2018】异或序列(莫队)
[BZOJ5301][CQOI2018]异或序列(莫队) 题面 BZOJ 洛谷 Description 已知一个长度为 n 的整数数列 a[1],a[2],-,a[n] ,给定查询参数 l.r ,问在 ...
- BZOJ5335:[TJOI2018]智力竞赛——题解
https://www.lydsy.com/JudgeOnline/problem.php?id=5335 小豆报名参加智力竞赛,他带上了n个好朋友作为亲友团一块来参加比赛. 比赛规则如下: 一共有m ...
- [Leetcode] search in rotated sorted array 搜索旋转有序数组
Suppose a sorted array is rotated at some pivot unknown to you beforehand. (i.e.,0 1 2 4 5 6 7might ...