`
iluoxuan
  • 浏览: 577242 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

3:redis的数据类型及操作

阅读更多

1: redis的是key-value 数据库,value的数据类型有:

Lists (列表)

Sets (集合)

Sorted sets (有序集合)

Hashes (哈希表)

键值的数据类型决定了该键值支持的操作。Redis 支持诸如列表、集合或有序集合的交集、

并集、查集等高级原子操作;同时,如果键值的类型是普通数字,Redis 则提供自增等原子

操作。


2: strings 类型及操作

 exists ljq  //判断建是否存在 0 不存在 1

redis 127.0.0.1:6378> set ljq ljq
OK
redis 127.0.0.1:6378> get ljq
"ljq"
redis 127.0.0.1:6378> del ljq
(integer) 1
redis 127.0.0.1:6378> exists ljq
 

 

 

setnx ljq jljl // key存在, 不修改value,返回0

setex hello 10 red //set的value存在10s

redis 127.0.0.1:6378> get ljq
"ljq123"
redis 127.0.0.1:6378> setnx ljq jljl
(integer) 0
redis 127.0.0.1:6378> get ljq
"ljq123"
redis 127.0.0.1:6378> setex hello 10 red
OK
redis 127.0.0.1:6378> get hello
"red"
redis 127.0.0.1:6378> get hello
"red"
redis 127.0.0.1:6378> get hello
(nil)

 

 

   

setrange name 4 gmail,com // 范围修改 从1开始

mset h1 ljq1 h2 ljq2 // set多个

mset h1 ljqh1 h2 ljq222 // 修改多个

mget h1 h2 //获取多个key的值

getrange name 0 2 // 范围获取

redis 127.0.0.1:6378> get name
"ljq@qq.com"
redis 127.0.0.1:6378> setrange name 4 gmail,com
(integer) 13
redis 127.0.0.1:6378> get name
"ljq@gmail,com"
redis 127.0.0.1:6378> mset h1 ljq1 h2 ljq2
OK
redis 127.0.0.1:6378> get h1
"ljq1"
redis 127.0.0.1:6378> get h2
"ljq2"
redis 127.0.0.1:6378> mset h1 ljqh1 h2 ljq222
OK
redis 127.0.0.1:6378> get h1
"ljqh1"
redis 127.0.0.1:6378> get h2
"ljq222"
redis 127.0.0.1:6378> getset name
(error) ERR wrong number of arguments for 'getset' command
redis 127.0.0.1:6378> getset name
(error) ERR wrong number of arguments for 'getset' command
redis 127.0.0.1:6378> get name
"ljq@gmail,com"
redis 127.0.0.1:6378> getset name ljss
"ljq@gmail,com"
redis 127.0.0.1:6378> get name
"ljss"
 
原子操作
incr age //原子操作  加1
incrby age 6 //原子操作  加6
redis 127.0.0.1:6378> set age 12
OK
redis 127.0.0.1:6378> incr age
(integer) 13
redis 127.0.0.1:6378> incr age
(integer) 14
redis 127.0.0.1:6378> incr age
(integer) 15
redis 127.0.0.1:6378> incr age
(integer) 16
redis 127.0.0.1:6378> get age
"16"
redis 127.0.0.1:6378> incrby age 6
(integer) 22
redis 127.0.0.1:6378> get  age
"22"
redis 127.0.0.1:6378> decr age
(integer) 21
redis 127.0.0.1:6378> decr age
(integer) 20
redis 127.0.0.1:6378> decrby 6
(error) ERR wrong number of arguments for 'decrby' command
redis 127.0.0.1:6378> decrby age 6
(integer) 14
 
redis 127.0.0.1:6378> get name
"ljss"
redis 127.0.0.1:6378> append name @qq.com
(integer) 11
redis 127.0.0.1:6378> get name
"ljss@qq.com"
redis 127.0.0.1:6378> strlen name
(integer) 11
redis 127.0.0.1:6378> get age
"14"
redis 127.0.0.1:6378> strlen age
(integer) 2
 
 2: hashes类型及操作
redis的hashes是key-value键值对, 特别适合用于存储对象。相较于将对象的每个字段存成单个 string 类型。
将一个对象存储在 hash 类型中会占用更少的内存,并且可以更方便的存取整个对象。省内存的原因是新
建一个 hash 对象时开始是用 zipmap(又称为 small hash)来存储的。这个 zipmap 其实并不
是 hash table,但是 zipmap 相比正常的 hash 实现可以节省不少 hash 本身需要的一些元数据
存储开销。尽管 zipmap 的添加,删除,查找都是 O(n),但是由于一般对象的 field 数量都不太多。所以使用 zipmap 也是很快的,也就是说添加删除平均还是 O(1)。如果 field 或者 value的大小超出一定限制后,
Redis 会在内部自动将 zipmap 替换成正常的 hash 实现. 这个限制可以在配置文件中指定
hash-max-zipmap-entries 64 #配置字段最多 64 个,
hash-max-zipmap-value 512 #配置 value 最大为 512 字节
 1: hset, hget  
redis 127.0.0.1:6378> hset testhash key1 value1
(integer) 1
redis 127.0.0.1:6378> hget testhash key1
"value1"
redis 127.0.0.1:6378> 
 2:hsetnx
redis 127.0.0.1:6378> hsetnx testhash key1 ljq
(integer) 0
redis 127.0.0.1:6378> hget testhash key1
"value1"
redis 127.0.0.1:6378> 
 3:hmset, hmget   set多个取多个
redis 127.0.0.1:6378> hmset myhash key1 vlaue1 key2 value2
OK
redis 127.0.0.1:6378> hmget myhash key1 key2
1) "vlaue1"
2) "value2"
 4:hincrby 原子加
redis 127.0.0.1:6378> hset inhash key1 20
(integer) 1
redis 127.0.0.1:6378> hincr inhash key1
(error) ERR unknown command 'hincr'
redis 127.0.0.1:6378> hincrby inhash key1 5
(integer) 25
 5:hexists, hlen 计算里面field的数量
   
redis 127.0.0.1:6378> hexists myhash key1
(integer) 1
redis 127.0.0.1:6378> hget myhash key1
"vlaue1"
redis 127.0.0.1:6378> hlen myhahs key1
(error) ERR wrong number of arguments for 'hlen' command
redis 127.0.0.1:6378> hlen myhah key1
(error) ERR wrong number of arguments for 'hlen' command
redis 127.0.0.1:6378> hlen myhash
(integer) 2
 6: hdel删除一个key
redis 127.0.0.1:6378> hlen myhash
(integer) 3
redis 127.0.0.1:6378> hlen myhash key2
(error) ERR wrong number of arguments for 'hlen' command
redis 127.0.0.1:6378> hdel myhash key2
(integer) 1
redis 127.0.0.1:6378> hlen myhash
(integer) 2
 7:获得所有的key 和value
redis 127.0.0.1:6378> hkeys myhash
1) "key1"
2) "key3"
redis 127.0.0.1:6378> hvals myhash
1) "vlaue1"
2) "value3"
redis 127.0.0.1:6378> hgetall myhash
1) "key1"
2) "vlaue1"
3) "key3"
4) "value3"
 
 
分享到:
评论

相关推荐

    typora:redis笔记

    3. Redis的数据类型与操作:如基本的字符串(Strings)操作、哈希(Hashes)用于存储对象、列表(Lists)实现消息队列、集合(Sets)进行不重复元素存储、有序集合(Sorted Sets)进行排序操作等。 4. Redis的持久化机制:...

    数据不丢失:Redis RDB与AOF持久化深度解析

    4. **丰富的数据类型**:Redis 不仅支持基本的数据类型,还支持复杂的数据结构。 5. **主从复制**:Redis 支持主从复制,可以进行读写分离,提高性能和数据安全性。 6. **高可用性**:通过 Redis Sentinel 系统或...

    数据驱动的交通脉络:Redis位图在智能交通规划中的革新应用

    4. **丰富的数据类型**:Redis 不仅支持基本的数据类型,还支持复杂的数据结构。 5. **主从复制**:Redis 支持主从复制,可以进行读写分离,提高性能和数据安全性。 6. **高可用性**:通过 Redis Sentinel 系统或...

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

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

    Redis数据类型转换的艺术:深入解析与实战代码

    4. **丰富的数据类型**:Redis 不仅支持基本的数据类型,还支持复杂的数据结构。 5. **主从复制**:Redis 支持主从复制,可以进行读写分离,提高性能和数据安全性。 6. **高可用性**:通过 Redis Sentinel 系统或...

    Redis面试指南:Redis面试宝典实用技巧分享

    2. Redis的数据类型: - String:基本的字符串类型,支持设置、获取和操作字符串。 - List:有序的元素集合,支持两端插入和弹出操作。 - Set:无序的唯一元素集合,支持添加、删除和查询元素。 - Hash:键值对...

    第 6 章: Redis 实现原理简介.rar

    - 字符串(String):最基础的数据类型,可以存储字符串、整数或浮点数。 - 哈希(Hash):用于存储键值对的集合,适合表示对象。 - 列表(List):双向链表结构,可进行顺序操作,如添加、删除元素。 - 集合(Set):...

    Redis缓存管理工具:Redis-Desktop

    2. **键值浏览**:提供树状视图,清晰地展示Redis中的键和其对应的值,支持多种数据类型如字符串、哈希、列表、集合和有序集合。 3. **操作命令**:内置了常用的Redis命令,用户可以直接在界面上执行,无需打开...

    redis面试题及答案

    **面试题3:Redis的内存管理策略是什么?** 答:Redis使用LRU(Least Recently Used)算法进行内存淘汰。当内存达到上限时,Redis会删除最近最少使用的键来释放空间。另外,还可以配置为LFU(Least Frequently Used...

    Redis 50 道面试题及答案.docx

    * 数据类型:Redis 支持多种数据结构,而 Memcached 只支持简单的字符串。 * 速度:Redis 的速度比 Memcached 快很多。 * 持久化:Redis 支持持久化,而 Memcached 不支持。 标题:Redis 的数据类型 Redis 支持...

    面渣逆袭:Redis连环五十二问,图文详解,这下面试稳了!.doc

    3. 排行榜:Redis 提供了列表和有序集合数据结构,合理地使用这些数据结构可以很方便地构建各种排行榜系统。 4. 社交网络:赞/踩、粉丝、共同好友/喜好、推送、下拉刷新。 5. 消息队列:Redis 提供了发布订阅功能和...

    藏经阁-Redis交流.pdf

    本文档旨在为读者提供一个Redis入门指南,从Redis的基本概念到高级应用,涵盖了Redis的历史、特点、数据类型、命令、使用场景等方面的知识点。 Redis的历史 Redis的创始人是Salvatore Sanfilippo,于2009年发布了...

    mac版的redis 客户端 开始以为mac没有呢

    1. 数据浏览:显示键值对的详细信息,包括数据类型、过期时间等。 2. 搜索和过滤:通过搜索框快速查找特定的键或值。 3. 编辑和操作:直接在界面上修改键值,支持批量操作。 4. 导入和导出:将数据导入到Redis,或者...

    Redis数据模型深度剖析:内存中的数据艺术

    4. **丰富的数据类型**:Redis 不仅支持基本的数据类型,还支持复杂的数据结构。 5. **主从复制**:Redis 支持主从复制,可以进行读写分离,提高性能和数据安全性。 6. **高可用性**:通过 Redis Sentinel 系统或...

    Redis内存之谜:为何数据尽藏于丝路?

    3. **支持多种数据类型**:Redis支持字符串(strings)、列表(lists)、集合(sets)、有序集合(sorted sets)、散列(hashes)、位图(bitmaps)、超日志(hyperloglogs)等数据类型。 4. **原子操作**:Redis的...

    Redis缓存失效策略:高效数据管理的艺术

    4. **丰富的数据类型**:Redis 不仅支持基本的数据类型,还支持复杂的数据结构。 5. **主从复制**:Redis 支持主从复制,可以进行读写分离,提高性能和数据安全性。 6. **高可用性**:通过 Redis Sentinel 系统或...

    Java操作Redis的多种数据类型

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

    Redis - Redis深度历险.pdf.zip

    1. **数据类型**:Redis提供了丰富的数据结构支持,如字符串(Strings)、哈希(Hashes)、列表(Lists)、集合(Sets)和有序集合(Sorted Sets)。这些数据类型的使用极大地提高了开发效率和数据处理能力。 2. **持久化**:...

    Redis数据类型视频

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

Global site tag (gtag.js) - Google Analytics