`
transcend
  • 浏览: 11188 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

Redis 基础数据类型和基础数据类型相关操作

阅读更多

 

Redis是一个数据结构类型的服务器,不是单纯的key-value存储。Redis里面的键是二进制安全的(二进制安全是指数据在传输过程中保证数据的安全性,包括加密等),因此键的内容不应该包含空格或者换行符。比如”hello world””hello world\n”是错误的。

 

字符串类型

这是最简单的redis数据类型,在只使用这个数据类型的时候,Redis就和一个有持久存储功能的memcached服务器类似。在Redis中,值最大可以有1GB,因此可以将图片等内容都缓存进去。SET操作,GET操作是基本的存储和读取操作,INCR命令可以将值自增1.

 

Redis能存储二进制安全的字符串,最大长度为1GB

redis 127.0.0.1:6379> SET name "John Doe"
OK
redis 127.0.0.1:6379> GET name
"John Doe"

String类型还支持批量的读写操作

redis 127.0.0.1:6379> MSET age 30 sex "male"
OK
redis 127.0.0.1:6379> MGET age sex
1) "30"
2) "male"

String类型其实也可以用来存储数字,并支持对数字的加减操作。

redis 127.0.0.1:6379> INCR age
(integer) 31
redis 127.0.0.1:6379> INCRBY age 4
(integer) 35
redis 127.0.0.1:6379> GET age
"35"
redis 127.0.0.1:6379> DECR age
(integer) 34
redis 127.0.0.1:6379> DECRBY age 4
(integer) 30
redis 127.0.0.1:6379> GET age
"30"

String类型还支持对其部分的修改和获取操作

redis 127.0.0.1:6379> APPEND name " Mr."
(integer) 12
redis 127.0.0.1:6379> GET name
"John Doe Mr."
redis 127.0.0.1:6379> STRLEN name
(integer) 12
redis 127.0.0.1:6379> SUBSTR name 0 3
"John"

List类型

RedisList类型是使用双向链表存储的,因此不管是在List的头还是尾部插入数据,所消耗的时间的是固定的。

 

 

Redis能够将数据存储成一个链表,并能对这个链表进行丰富的操作

redis 127.0.0.1:6379> LPUSH students "John Doe"
(integer) 1
redis 127.0.0.1:6379> LPUSH students "Captain Kirk"
(integer) 2
redis 127.0.0.1:6379> LPUSH students "Sheldon Cooper"
(integer) 3
redis 127.0.0.1:6379> LLEN students
(integer) 3
redis 127.0.0.1:6379> LRANGE students 0 2
1) "Sheldon Cooper"
2) "Captain Kirk"
3) "John Doe"
redis 127.0.0.1:6379> LPOP students
"Sheldon Cooper"
redis 127.0.0.1:6379> LLEN students
(integer) 2
redis 127.0.0.1:6379> LRANGE students 0 1
1) "Captain Kirk"
2) "John Doe"
redis 127.0.0.1:6379> LREM students 1 "John Doe"
(integer) 1
redis 127.0.0.1:6379> LLEN students
(integer) 1
redis 127.0.0.1:6379> LRANGE students 0 0
1) "Captain Kirk"

Redis也支持很多修改操作

redis 127.0.0.1:6379> LINSERT students BEFORE "Captain Kirk" "Dexter Morgan"
(integer) 3
redis 127.0.0.1:6379> LRANGE students 0 2
1) "Dexter Morgan"
2) "Captain Kirk"
3) "John Doe"
redis 127.0.0.1:6379> LPUSH students "Peter Parker"
(integer) 4
redis 127.0.0.1:6379> LRANGE students 0 3
1) "Peter Parker"
2) "Dexter Morgan"
3) "Captain Kirk"
4) "John Doe"
redis 127.0.0.1:6379> LTRIM students 1 3
OK
redis 127.0.0.1:6379> LLEN students
(integer) 3
redis 127.0.0.1:6379> LRANGE students 0 2
1) "Dexter Morgan"
2) "Captain Kirk"
3) "John Doe"
redis 127.0.0.1:6379> LREM students 1 "John Doe"
(integer) 1
redis 127.0.0.1:6379> LLEN students
(integer) 1
redis 127.0.0.1:6379> LRANGE students 0 1
1) "Captain Kirk"

 

SET类型

RedisSETs是没有排序的二进制字符串集,换种说法就是字符串的无序集合。因为它是通过哈希表来实现的,因此它的添加,删除,查找的时间复杂度都是O1)。Set除了基本的添加删除操作之外,还存在集合的取并集,交集,差集。通过这些操作可以轻松实现SNSBLOG的好友推荐,标签等功能。

 

 

Redis能够将一系列不重复的值存储成一个集合

redis 127.0.0.1:6379> SADD birds crow
(integer) 1
redis 127.0.0.1:6379> SADD birds pigeon
(integer) 1
redis 127.0.0.1:6379> SADD birds bat
(integer) 1
redis 127.0.0.1:6379> SADD mammals dog
(integer) 1
redis 127.0.0.1:6379> SADD mammals cat
(integer) 1
redis 127.0.0.1:6379> SADD mammals bat
(integer) 1
redis 127.0.0.1:6379> SMEMBERS birds
1) "bat"
2) "crow"
3) "pigeon"
redis 127.0.0.1:6379> SMEMBERS mammals
1) "bat"
2) "cat"
3) "dog"

Sets结构也支持相应的修改操作

redis 127.0.0.1:6379> SREM mammals cat
(integer) 1
redis 127.0.0.1:6379> SMEMBERS mammals
1) "bat"
2) "dog"
redis 127.0.0.1:6379> SADD mammals human
(integer) 1
redis 127.0.0.1:6379> SMEMBERS mammals
1) "bat"
2) "human"
3) "dog"

Redis还支持对集合的子交并补等操作

redis 127.0.0.1:6379> SINTER birds mammals
1) "bat"
redis 127.0.0.1:6379> SUNION birds mammals
1) "crow"
2) "bat"
3) "human"
4) "pigeon"
5) "dog"
redis 127.0.0.1:6379> SDIFF birds mammals
1) "crow"
2) "pigeon"

 

 

Sorted set

set一样是字符串的集合,不同的是每个元素都会关联一个double类型的score。实现使用的是skip listhash tableskip list的实现使用的是双线链表。Score的主要作用是排序,因此 sorted set主要用作索引。

 

 

Sorted Sets和Sets结构相似,不同的是存在Sorted Sets中的数据会有一个score属性,并会在写入时就按这个score排好序。

redis 127.0.0.1:6379> ZADD days 0 mon
(integer) 1
redis 127.0.0.1:6379> ZADD days 1 tue
(integer) 1
redis 127.0.0.1:6379> ZADD days 2 wed
(integer) 1
redis 127.0.0.1:6379> ZADD days 3 thu
(integer) 1
redis 127.0.0.1:6379> ZADD days 4 fri
(integer) 1
redis 127.0.0.1:6379> ZADD days 5 sat
(integer) 1
redis 127.0.0.1:6379> ZADD days 6 sun
(integer) 1
redis 127.0.0.1:6379> ZCARD days
(integer) 7
redis 127.0.0.1:6379> ZRANGE days 0 6
1) "mon"
2) "tue"
3) "wed"
4) "thu"
5) "fri"
6) "sat"
7) "sun"
redis 127.0.0.1:6379> ZSCORE days sat
"5"
redis 127.0.0.1:6379> ZCOUNT days 3 6
(integer) 4
redis 127.0.0.1:6379> ZRANGEBYSCORE days 3 6
1) "thu"
2) "fri"
3) "sat"
4) "sun"

 

 

Hash

Redishashstring类型的fieldvalue映射表,添加删除的时间复杂度是O(1)。适合用来存储对象,可以减少内存的使用。减少内存使用的原因是新建hash对象时开始使用zipmap来存储。

 

redis 127.0.0.1:6379> HKEYS student
1) "name"
2) "age"
3) "sex"
redis 127.0.0.1:6379> HVALS student
1) "Ganesh"
2) "30"
3) "Male"
redis 127.0.0.1:6379> HGETALL student
1) "name"
2) "Ganesh"
3) "age"
4) "30"
5) "sex"
6) "Male"
redis 127.0.0.1:6379> HDEL student sex
(integer) 1
redis 127.0.0.1:6379> HGETALL student
1) "name"
2) "Ganesh"
3) "age"
4) "30"
redis 127.0.0.1:6379> HMSET kid name Akshi age 2 sex Female
OK
redis 127.0.0.1:6379> HMGET kid name age sex
1) "Akshi"
2) "2"
3) "Female"

 

 

分享到:
评论

相关推荐

    Java操作Redis的多种数据类型

    本文将深入探讨如何使用Java操作Redis的四种主要数据类型:字符串(String)、列表(List)、哈希(Hash)和集合(Set)。 首先,我们来看**字符串类型**(String)。在Redis中,字符串是最基础的数据类型,可以...

    Redis基础数据库类型

    Redis 基础数据类型包括 String、Hash、List、Set 和 Zset 五种,今天我们学习了 String 和 List 两种类型的命令和应用场景。Redis 的基础数据类型非常丰富,掌握这些基础知识可以帮助我们更好地使用 Redis。

    Redis数据类型视频

    在本课程中,你将了解Redis是什么、能干什么、如何用,了解NoSQL的使用场景和概念,快速掌握Redis的安装配置、五大数据类型、常用操作命令、Redis持久化、主从复制、事务控制以及用Jedis操作进行Java开发等知识。...

    redis基础数据结构讲解

    Redis支持多种数据类型,本篇文章将对Redis的基础数据结构进行讲解,包括string(字符串)、list(列表)、set(集合)、hash(哈希)以及zset(有序集合)。掌握这些基础数据结构对使用Redis至关重要。 首先,字符...

    数据结构Redis中数据类型对应的数据结构.pdf

    在Redis中,键的数据类型始终是字符串,而值的数据类型包括字符串、列表、字典、集合和有序集合。 1. 字符串(String):这是最基础的数据类型,对应数据结构是简单的字符串。在Redis中,字符串可以用来存储各种...

    Redis基础架构与数据类型 Redis键值操作与命令 Redis字符串与列表数据结构 Redis哈希与集合数据结构

    Redis基础架构与数据类型 Redis键值操作与命令 Redis字符串与列表数据结构 Redis哈希与集合数据结构 Redis排序集合与使用场景 Redis持久化策略与RDB Redis持久化策略与AOF Redis主从复制与集群配置 Redis事务与Lua...

    Redis集群数据迁移操作文档

    《Redis集群数据迁移实战指南》 在IT领域,数据迁移是一项关键任务,特别是在使用Redis这样的高性能内存数据库时。...在实际操作中,务必谨慎对待每个步骤,避免数据丢失或损坏,确保业务的连续性和稳定性。

    Java redis五种数据类型在Java中的详细使用

    总结:本教程详细介绍了Redis的五种数据类型在Java中的应用,包括字符串、哈希、列表、集合和有序集合。通过实例代码展示了如何使用Jedis API进行增删查改操作。对于Java开发者来说,掌握这些内容对于提升项目中的...

    c++ 操作redis数据库

    1. Redis的数据结构和命令:理解Redis提供的不同数据类型及其操作命令,如字符串、哈希表、列表、集合、有序集合等。 2. C++库选择:熟悉cpp-redis、hiredis等C++ Redis客户端库,了解其API用法。 3. 网络编程:理解...

    基于redis分页和排序设计(根据redis的数据类型设计)

    基于redis分页和排序设计(根据redis的数据类型设计)

    Redis实战_Redis实战中文完整版_Redis快速入门_Redis数据类型及操作_Redis常用

    2. **Redis数据类型及操作**:这是Redis的核心部分,包括五大数据类型: - **字符串(String)**:最基础的数据类型,支持设置、获取、增加、减少等操作。 - **哈希(Hash)**:用于存储键值对集合,适用于存储对象。 ...

    02_redis 数据类型.pdf

    首先,Redis数据类型可以分为五种常用类型:string、hash、list、set、sorted_set。Redis自身是一个基于内存的存储系统,其中所有的数据都是采用key:value的形式存储的。key总是字符串类型,而value则根据数据类型的...

    Redis操作基础文档中文PDF完整版最新版本

    Redis数据类型 redis事务 Redis-图形化客户端 Jedis客户端操作Redis SpringBoot整合Redis Redis完成手机验证码功能 SpringBoot整合RedisTemplat Redis持久化 Redis订阅发布 Redis主从复制介绍 主从复制搭建 哨兵模式...

    redis的数据操作

    redis的数据类型及操作 redis当中一共支持五种数据类型,分别是string字符串类型,list列表类型,集合set类型,hash表类型以及有序集合zset类型 字符串操作 SET key value(指定key的值) GET key value(获取key的值) ...

    C#操作Redis明细内容 C#调用redis c#使用redis业务 C# Redis操作类 C#中Redis封装的类 C#

    Redis 支持的数据类型有哪些?1)String(字符类型) 2)Hash(散列类型) 3)List(列表类型) 4)Set(集合类型) 5)SortedSet(有序集合类型,简称zset) 6)Bitmap(位图) 7)HyperLogLog(统计) 8)GEO(地理) 包括c#引用...

    php 操作redis五大数据类型实例

    本资源主要是php 操作redis五大数据类型的实例,供参考 redis安装请移步 https://blog.csdn.net/xxs18326183038/article/details/80599080

    redis数据类型指令整理

    通过以上对Redis数据类型及其相关指令的整理,我们可以了解到Redis提供了非常丰富和灵活的数据操作能力,这使得Redis成为了一个在多种应用场景下都非常实用的工具。无论是在数据存储、缓存加速还是消息队列等场景,...

    Redis 数据类型.pdf

    Redis 数据类型

Global site tag (gtag.js) - Google Analytics