安装Redis之后大家肯定都试过
get set 命令了,也了解了最基本的数据类型字符串,下面让我们认识以下
Redis 中的其他成员吧。
1Redis
Keys
这里的key指的是
Redis 键值对的key。
Redis Key 是二进制安全的,也就是说你可以用任意二进制序列作为
key,从一个简单的字符串到一个jpg图片内容。空字符串也是有效的key值。
key个几个规则:
-
不要太长。这个大家都明白,越长越消耗内存,查找时的计算代价也越高。
-
不要太短。太短的key不容已阅读和理解,比如
user:100:password 写成
u:1000:p,会让人不明所以。因为key相对与value总是很小的,所以由此带来的一点点的空间节省并无太大优势。
-
遵循一种模式。比如“对象类型:id:字段名”,就行上面提到的
user:100:password,如果有多个单词,可以用一个点来代替空格:comment:1234:reply.to
2字符串
这个是
Redis 最简单的数据类型,如果还没有安装
Redis,那么到下面网页感受一下把:
http://redis.io/commands/get
ps: 本文的例子都是在线录入的。
直接在
Example 下面的文本框里输入命令,回车
。
redis>
set 我
alan
OK
redis>
get 我
"alan"
redis>
set 暗号
"还记得
大名湖畔的 唉冬瓜吗 "
OK
redis>
get 暗号
"还记得
大名湖畔的 唉冬瓜吗 "
redis>
这里我直接用中文作为
key,没有一点问题。
前面提到
key 可以是任意二进制字符串,那么值也同样,你可以保存一副图片(值大小不能超过512M)。
虽然字符串是基本类型,也可以进行一些有趣的操作:
redis>
set qty 256
OK
redis>
get qty
"256"
redis>
incr qty
(integer)
257
redis>
get qty
"257"
redis>
incrby qty 100
(integer)
357
redis>
get qty
"357"
redis>
incr 命令把字符串解析成整型,然后+1,再保存为字符串。类似的命令还有
incrby, decr, decrby。
如果字符串值不能解析成整数,incr命令会报错,如
ERR value is not an integer or out of range。
redis>
set name alan
OK
redis>
incr name
ERR value
is not an integer or out of range
redis>
incr 叫做
atomic increment,其
atomic (原子)特性的意义:如果两个客户端同时发送
incr 命令,客户端会同时读到
“10”,对它们+1,最终的结果一定为12,要更多了解可以去官网查看相关资料。
3列表(list)
首先讲一下list的理论背景,list这个词很多时候都被不恰当的使用,比如
python 的
list,她们实际上是数组。一般意义上讲,list
就是有序元素的集合。而使用
数组 实现,和使用 linked list
实现的list在属性上有所不同。
Redis 的
list 是使用
Linked List 实现的,其优点是在
list
的两端添加元素其时间复杂度是常数级的。也就是说你在‘10个元素的list头部添加新元素,和在一亿个元素的list头部添加消耗的时间相同;而使用数组实现list的优势在于索引速度非常快。
Redis使用
Linked List
实现的原因是:对于一个数据库系统来说,能快速在很大的列表上添加元素至关重要。
3.1第一步
添加新元素的命令是
lpush 和
rpush,分别在左边(头部)和右边(尾部)添加一个元素。lrange接受三个参数,列表的key,范围的开始,范围的结束,返回一个列表的片段。
redis>
lpush message "你好,很高兴认识你"
(integer)
1
redis>
lpush message "我也很高兴认识你,我是
alan"
(integer)
2
redis>
lpush message "我的名字是
bruce "
(integer)
3
redis>
lrange message 0 2
1) "我的名字是
bruce "
2)
"我也很高兴认识你,我是
alan"
3)
"你好,很高兴认识你"
redis>
由上面例子里,我们每次都在列表头部添加一个元素。
lrange也可已接受负数来表示范围,
-1 是最后一个元素,-2
是倒数第二个元素。
redis>
lrange message -1 -1
1)
"你好,很高兴认识你"
redis>
lrange message -1 2
1)
"你好,很高兴认识你"
redis>
lrange message -2 2
1)
"我也很高兴认识你,我是
alan"
2)
"你好,很高兴认识你"
redis>
由上例,list可以应用到聊天系统;可以用在评级系统里,比如
reddit.com;用在博客引擎中,每篇日志都是一个list,然后向里面放入评论;等等。
3.2在List中放入ID,而不是数据
上例中,我们直接将数据对象(消息的内容)放入了
list,由于对象可能多次被引用,通常我们不那样做,而是存放ID到list中。
上面聊天的例子,我们用新的方式来存储:
redis>
incr next.message.id
(integer)
1
redis>
set message:1:sender alan
OK
redis>
set message:1:content "hello, something else"
OK
redis>
lpush messages 1
(integer)
1
redis>
incr next.message.id
(integer)
2
redis>
set message:2:sender bruce
OK
redis>
set message:2:content "something else else ..."
OK
redis>
lpush messages 2
(integer)
2
这次,我们先通过
incr 生成一个唯一的ID,然后创建对象,并为对象赋值,最后把这个对象的
id 放入list中。
在命令参考里可以看到更多关于list的命令,Redis命令参考传送
4集合
Set
Redis的
Set 是无序的,元素是二进制安全的字符串。
-
sadd命令可以向集合中添加一个元素
-
scard命令获得集合中元素的个数
-
smembers命令获得集合中所有元素(无序)
-
srem 移除集合中的一个或者多个元素
redis>
sadd myset 1
(integer)
1
redis>
sadd myset 2
(integer)
1
redis>
scard myset
(integer)
2
redis>
sadd myset 3
(integer)
1
redis>
scard myset
(integer)
3
redis>
smembers myset
1) "1"
2) "2"
3) "3"
redis>
srem myset 1
(integer)
1
redis>
srem myset 2 3
(integer)
2
redis>
smembers myset
(empty list
or set)
redis>
redis>
sadd myset 2
(integer)
1
redis>
sismember myset 2
(integer)
1
redis>
sismember myset 22
(integer)
0
如果元素存在返回1,不存在返回0。
redis>
sadd set1 1
(integer)
1
redis>
sadd set1 2
(integer)
1
redis>
sadd set1 3
(integer)
1
redis>
sadd set2 2
(integer)
1
redis>
sadd set2 3
(integer)
1
redis>
sadd set2 4
(integer)
1
redis>
sinter set1 set2
1) "2"
2) "3"
redis>
5有序集合
Sorted Set / ZSet
关于有序集合的意义不多说,可以用
zadd 来创建一个有序集合,用
zrange 获取元素:
redis>
zadd students 15 tom
(integer)
1
redis>
zadd students 33 bill
(integer)
1
redis>
zadd students 18 alis
(integer)
1
redis>
zadd students 18 alan
(integer)
1
redis>
zrange students 0 -1
1) "tom"
2) "alan"
3) "alis"
4) "bill"
ZSet 的每个元素都有一个评分,Redis通过这个评分排序。上面例子中
15 33 18 18 都是评分,如果评分相同那么会根据元素进行排序。上面
alan 排在了
alis 的前面。
redis>
zrevrange students 0 -1
1) "bill"
2) "alis"
3) "alan"
4) "tom"
redis>
zrangebyscore students 18 30
1) "alan"
2) "alis"
可以看到
评分为 18 的元素都包含进来了。
redis>
zrangebyscore students -inf 30
1) "tom"
2) "alan"
3) "alis"
redis>
zremrangebyscore students -inf 30
(integer)
3
redis>
zrange students 0 -1
1) "bill"
redis>
可以看到评分为
-inf 到
30 的元素都被删除了(共3个),最后只剩下了一个元素。
参考:http://redis.io/topics/data-types-intro
分享到:
相关推荐
总结来说,“Redis入门指南-清晰完整版带目录”将涵盖Redis的基础知识、安装配置、数据类型、命令操作、持久化、高可用性以及实际应用场景等多个方面,帮助初学者快速掌握Redis,并能在项目中灵活运用。这份指南将是...
- **键值查看**:通过树形结构清晰地查看Redis中的键值对,包括字符串、列表、集合、哈希表和有序集合等多种数据类型。 - **数据操作**:添加、修改、删除键值,支持批量操作和事务处理。 - **搜索与过滤**:在大量...
用户可以通过拖放操作来导入和导出数据,支持多种数据类型,如字符串、哈希、列表、集合和有序集合。此外,该工具还提供了实时的数据查看和编辑功能,方便开发者对Redis数据库进行调试和优化。 在使用场景上,Redis...
Redis从入门到精通2024版 视频教程 下载 ├─第 01 章 开篇 │ 001.Redis 录制计划.mp4 │ 002.Redis 介绍.mp4 │ 003.Redis 安装.mp4 │ ├─第 02 章 基本数据类型 │ 01.在后台启动 Redis.mp4 │ 02....
### Redis入门教程精要 #### 1. Redis 是什么? Redis 是一款开源的、使用 C 语言编写的、支持网络交互的 Key-Value 数据库。它既可以作为内存数据库使用,也可以实现持久化存储。Redis 的官网地址是 `redis.io`,...
Redis 是一个高性能的键值数据库,它以键值对的形式存储数据,支持多种数据类型,如字符串、哈希、列表、集合和有序集合。在"redis-2.2.5-win32-win64"这个压缩包中,包含了 Redis 在 Windows 操作系统上的版本,既...
本指南将帮助初学者理解 Redis 的基本概念、安装与配置、数据类型以及常用命令,从而快速入门 Redis。 1. **Redis 简介** - Redis 源自意大利程序员 Salvatore Sanfilippo,最初是为了提高网站性能而设计的。 - ...
- 数据浏览:直观地查看和编辑键值对,支持多种数据类型。 - 操作执行:提供命令行界面,允许用户直接输入Redis命令进行操作。 - 数据导入导出:可以将Redis数据导入导出为JSON、CSV等格式。 - 实时监控:显示服务器...
20-redis-redis中关于字符串类型数据的操作命令1.avi 21-redis-redis中关于字符串类型数据的操作命令2.avi 22-redis-redis中关于列表类型数据的操作命令1.avi 23-redis-redis中关于列表类型数据的操作命令2.avi 24-...
- **字符串(String)**:Redis 最基本的数据类型,可以存储字符串、数字等,支持自增、自减操作。 - **哈希(Hash)**:用于存储键值对的集合,适合表示对象。 - **列表(List)**:双向链表结构,支持两端插入...
1. Redis支持五种基本数据类型:String(字符串)、List(列表)、Set(集合)、Hash(哈希表)和Sorted Set(有序集合)。每种数据类型都有其特定的使用场景和操作命令。 2. String是最基础的数据类型,你可以用`...
### Redis 入门教程知识点详解 #### 一、Redis 概述 - **定义**: - Redis(Remote Dictionary Server)是一种开源的、基于内存的日志型 Key-Value 数据库,支持多种数据类型如字符串(string)、链表(list)、...
在学习过程中,理解每个数据类型的特性和适用场景至关重要,同时掌握 Redis 的命令行操作,能够熟练使用其高级特性,如事务、发布订阅、持久化等,将有助于在实际项目中更好地利用 Redis 提升系统的性能和效率。...
本书是一本Redis入门指导书籍,以通俗易懂的方式介绍了Redis基础与实践方面的知识,包括历史特性、在开发和生产环境中部署运行Redis、数据类型与命令、使用Redis实现队列、事务、复制、管道、持久化、优化Redis存储...
Redis从入门到精通2024版 视频教程 下载 ├─第 01 章 开篇 │ 001.Redis 录制计划.mp4 │ 002.Redis 介绍.mp4 │ 003.Redis 安装.mp4 │ ├─第 02 章 基本数据类型 │ 01.在后台启动 Redis.mp4 │ 02....
04-Redis数据类型 - Redis教程 05-Redis命令 - Redis教程 06-Redis键 - Redis教程。。。 13-Redis发布订阅 - Redis教程 。。。 24-Redis Java连接操作 - Redis教程 。。。 27-redis-cluster研究和使用 。。。
支持各种数据类型,如字符串、哈希、列表、集合和有序集合的管理。 2. **搜索与过滤**:提供搜索功能,可以快速定位到特定的键或值,同时支持正则表达式过滤,便于在大量数据中查找目标。 3. **数据导出与导入**:...
《Redis入门指南(第2版)》是一本Redis的入门指导书籍,以通俗易懂的方式介绍了Redis基础与实践方面的知识,包括历史与特性、在开发和生产环境中部署运行Redis、数据类型与命令、使用Redis实现队列、事务、复制、...
Redis从入门到精通2024版 视频教程 下载 ├─第 01 章 开篇 │ 001.Redis 录制计划.mp4 │ 002.Redis 介绍.mp4 │ 003.Redis 安装.mp4 │ ├─第 02 章 基本数据类型 │ 01.在后台启动 Redis.mp4 │ 02....