hash类型

• string 类型的键值对集合
• redis 中数据类型不支持嵌套,例如不能在 hash 中设置值为 hash
• 适合用于存储对象
• 每个 hash 可以存储 2 32 -1 键值对(40多亿)
设置值hset 获取值hget
127.0.0.1:6379> hset phone name apple
(integer) 1
127.0.0.1:6379> hget phone name
"apple"

同时设置多个字段和值(键相同)hset,同时获取多个字段的值(键相同)hget
127.0.0.1:6379> hmset phone price 12000 from America
OK127.0.0.1:6379> hmget phone name price from
1) "apple"
2) "12000"
3) "America"

查看键中所有字段
127.0.0.1:6379> hkeys phone
1) "name"
2) "price"
3) "from"

查看键中所有值127.0.0.1:6379> hvals phone
1) "apple"
2) "12000"
3) "America"

查看键中所有的字段和值
127.0.0.1:6379> hgetall phone
1) "name"
2) "apple"
3) "price"
4) "12000"
5) "from"
6) "America"

查看键中字段的个数
127.0.0.1:6379> hlen phone
(integer) 3

查看键中是否存在某个字段
127.0.0.1:6379> hexists phone price
(integer) 1

键中某个字段增加一定值,只能是数字类型
127.0.0.1:6379> hincrby phone price 1000
(integer) 13000
127.0.0.1:6379> hget phone price
"13000"
127.0.0.1:6379> hincrby phone name 100
(error) ERR hash value is not an integer

如果字段不存在则赋值,如果存在则不赋值
127.0.0.1:6379> hsetnx phone price 11000
(integer) 0
127.0.0.1:6379> hget phone price
"13000"
127.0.0.1:6379> hsetnx phone generation 12
(integer) 1
127.0.0.1:6379> hget phone generation
"12"

删除键中某个字段
127.0.0.1:6379> hdel phone generation
(integer) 1
127.0.0.1:6379> hkeys phone
1) "name"
2) "price"
3) "from"

删除键
127.0.0.1:6379> del phone
(integer) 1
127.0.0.1:6379> exists phone
(integer) 0

总结:
增/改:hset hmset hsetnx hincrby
删:hdel
查:hget hmget hkeys hvals hgetall hlen hexists
未举例的hash命令:hincrbyfloat hstrlen hvals hscan

list类型

• Redis 列表是简单的字符串列表,按照插入顺序排序
• 可以添加一个元素到列表的头部(左边)或者尾部(右边)
• 使用双向链表实现的,所以从两端取值时速度非常快
• 列表最多可存储 2 32 - 1 元素 (4294967295, 每个列表可存储40多亿)

lpush从链表左端插入元素,可插入一个或多个
127.0.0.1:6379> lpush phone apple
(integer) 1
127.0.0.1:6379> lpush phone samsung huawei xiaomi
(integer) 4

lrange根据索引查看链表元素,支持反向索引(-1代表最右,-2代表倒数第二,以此类推)
127.0.0.1:6379> lrange phone 0 -1
1) "xiaomi"
2) "huawei"
3) "samsung"
4) "apple"
127.0.0.1:6379> lrange phone -2 -1
1) "samsung"
2) "apple"

linsert在指定元素左侧或者右侧插入元素
127.0.0.1:6379> linsert phone before xiaomi oppo
(integer) 5
127.0.0.1:6379> linsert phone after apple vovi
(integer) 6
127.0.0.1:6379> lrange phone 0 -1
1) "oppo"
2) "xiaomi"
3) "huawei"
4) "samsung"
5) "apple"
6) "vovi"

lset指定链表指定索引处元素的值
127.0.0.1:6379> lset phone 0 zhongxing
OK

lindex查看链表指定索引处元素的值
127.0.0.1:6379> lindex phone 0
"zhongxing"
127.0.0.1:6379> lrange phone 0 -1
1) "zhongxing"
2) "xiaomi"
3) "huawei"
4) "samsung"
5) "apple"
6) "vovi"

lpop从链表左端弹出一个元素
127.0.0.1:6379> lpop phone
"zhongxing"

rpop从链表右端弹出一个元素
127.0.0.1:6379> rpop phone
"vovi"
127.0.0.1:6379> lrange phone 0 -1
1) "xiaomi"
2) "huawei"
3) "samsung"
4) "apple"

lrem key count value删除count个数个值为value的元素

count>0从左侧删除count个元素,count<0从右端删除count个元素,count=0删除所有值为value的元素
127.0.0.1:6379> lrem phone 1 samsung
(integer) 1
127.0.0.1:6379> lrange phone 0 -1
1) "xiaomi"
2) "huawei"
3) "apple"

ltrim删除链表指定索引区间外的所有元素
127.0.0.1:6379> ltrim phone 0 1
OK
127.0.0.1:6379> lrange phone 0 -1
1) "xiaomi"
2) "huawei"

rpoplpush source desc从第一个链表右端弹出一个元素,放入第二个链表左端,如果是同一个链表,则为列表旋转
127.0.0.1:6379> lpush car benz bmw audi
(integer) 3
127.0.0.1:6379> rpoplpush car phone
"benz"
127.0.0.1:6379> lrange phone 0 -1
1) "benz"
2) "xiaomi"
3) "huawei"
127.0.0.1:6379> rpoplpush phone phone
"huawei"

127.0.0.1:6379> lrange phone 0 -1
1) "huawei"
2) "benz"
3) "xiaomi"

总结:

增:lpush rpush linsert

删: lpop rpop lrem ltrim

改:lset rpoplpush

查:lindex lrange llen

没有根据索引删除,很别扭

未举例的list命令:lpushx rpushx blpop brpop brpoplpush

redis学习(二)数据类型的更多相关文章

  1. Redis 学习(二) —— 数据类型及操作

    Redis支持string.list.set.zset.hash等数据类型,这一篇学习redis的数据类型.命令及某些使用场景. 一.String,字符串 字符串是 Redis 最基本的数据类型.一个 ...

  2. Redis基础学习(二)—数据类型

    一.Redis支持的数据类型 Redis中存储数据是通过key-value存储的,对于value的类型有以下几种: (1)字符串. (2)Map (3)List (4)Set   public cla ...

  3. Redis学习二 C#中如何进行这五种数据类型的操作

    我在网上找了好久,就是没有找到Redis和C#结合的书,都是和别的编程语言在一起鬼混. 简单的用C#实现向Redis中插入那我中类型的数据 首先需要到NuGet 里面下载 Redis IDatabas ...

  4. Redis学习二:Redis入门介绍

    一.入门概述 1.是什么 Redis:REmote DIctionary Server(远程字典服务器) 是完全开源免费的,用C语言编写的,遵守BSD协议,是一个高性能的(key/value)分布式内 ...

  5. Redis 学习之数据类型

    该文使用centos6.5 64位 redis-3.2.8 [root@localhost bin]# netstat -tunpl |grep 6379  查看redis 是否启动成功 一.Stri ...

  6. redis学习-sds数据类型

    今天开始了redis的学习,本来想直接从源码看起的,不过看到有篇对redis介绍的基础教程 <Redis 设计与实现(第一版)> 于是决定从这个开始入门. 1.数据类型定义 typedef ...

  7. redis学习——day02_redis数据类型

    一.简介 Redis不仅仅是简单的key-value 存储器,同时也是一种data structures server.传统的key-value是指支持使用一个key字符串来索引value字符串的存储 ...

  8. Redis学习-string数据类型

    Redis 是一个开源的使用 ANSI C 语言编写.支持网络.可基于内存亦可持久化的日志 型.Key-Value 数据库. redis提供五种数据类型string,hash,list,set及sor ...

  9. C#中使用Redis学习二 在.NET4.5中使用redis hash操作

    上一篇>> 摘要 上一篇讲述了安装redis客户端和服务器端,也大体地介绍了一下redis.本篇着重讲解.NET4.0 和 .NET4.5中如何使用redis和C# redis操作哈希表. ...

  10. redis学习笔记——数据类型

    对象处理机制 Redis 构建了自己的类型系统,这个系统的主要功能包括:• redisObject 对象.• 基于redisObject 对象的类型检查.• 基于redisObject 对象的显式多态 ...

随机推荐

  1. C/C++ 关键字 static 详细解析

    static关键字是一个修饰符,根const类似,被它修饰的变量和函数分别被称为静态变量和静态函数,根据修饰的对象的不同,static表现出来的作用也不同. 1. C语言中的 static 在C语言中 ...

  2. jadx 定位方法

    目录 链接参数定位 链接参数定位 通过搜索请求链接中的参数来定位函数位置,如下图所示,请求链接为 https://www.python-spider.com/api/app1,app1为链接标识,可以 ...

  3. JS篇(005)-== 和 === 的不同

    答案:==是抽象相等运算符,而===是严格相等运算符.==运算符是在进行必要的类型转换后,再比较.===运算符不会进行类型转换,所以如果两个值不是相同的类型,会直接返回false.使用==时,可能发生 ...

  4. mac常用命令和Git创建tag命令

    一.mac命令 p.p1 { margin: 0; font: 12px ".PingFang SC" } p.p2 { margin: 0; font: 12px "H ...

  5. CCF 202006-2 稀疏向量

    #include <iostream> #include <bits/stdc++.h> #include <string> using namespace std ...

  6. 21 forms组件-参数initial&instance应用

    简单来讲: 如果你想传入前端的页面中附带值,那么在实例化forms中: form = SecondModelForm(data=request.POST, instance=permission_ob ...

  7. 【python】绘图,颜色,线型

    颜色 最好用的:在网站上找到对应使用十六进制RGB/RGBA字符串表示颜色 可以看颜色及其对应色号名称:https://xkcd.com/color/rgb/ 参考:matplotlib指定绘图颜色的 ...

  8. win10查看笔记本电池性能

    要生成电池报告,可以按Windows + R,窗口中输入 cmd 回车. 在提示符处输入: Powercfg /batteryreport,回车. 就可以在C盘看到性能报告文件.

  9. font-awesome vue/react 通用的图标

    在开发项目中遇到了矢量图标 一套绝佳的图标字体库和CSS框架 vue 中引入font-awesome 直接npm install font-awesome --save 就可以了,里边包含了样式和字体 ...

  10. LEETCODE 数组嵌套

    题目:数组嵌套 索引从0开始长度为N的数组A,包含0到N - 1的所有整数.找到最大的集合S并返回其大小,其中 S[i] = {A[i], A[A[i]], A[A[A[i]]], ... }且遵守以 ...