二、Redis数据结构
一、Redis有五大数据结构:
String、List、Set、ZSet、Hash
二、String
1. 类型
字符串(包括XML、JSON),数字,二进制(图片、音频)
2. 形式
3. 最大容量
512MB
4. 常用命令
操作 | 命令 | 备注 |
---|---|---|
新增 1 | set name 胡 age 10 | |
新增2 | setnx age 23 | 存在key,新增失败;不存在key,新增成功 |
新增3 | set age 23 xx | 存在key,返回1成功 |
获取 | get age | 获取value,无value是返回null |
批量新增 | mset k1 v1 k2 v2 | |
批量获取 | mget k1 k2 | |
计数 | incr age | 必须为整数自加1,非整数返回错误,无age键从0自增返回1 |
减法 | decr age | 整数age-1 |
减法 | decrby age 2 | 整数age-2 |
加法 | incr age | 整数age+1 |
加法 | incrby age 2 | 整数age+2 |
追加字符串 | set name hello; append name word | 追加成helloword |
获取字符串长度 | set hello “世界”;strlen hello | 结果是6,每个中文占3个字 |
截取字符串 | set name helloworld ;getrange name 2 4 | 返回llo |
三、HASH
1.类型
hash是一个String类型field和value的映射表,hash特适合用于存储对象。
2.形式
3.最大容量
元素个数最多为 2^32-1 个,即 4294967295 个
4.常用命令
操作 | 命令 | 备注 |
---|---|---|
新增 | hset user:1 name hu | 成功返回1,失败返回0 |
获取 | hget user:1 name | |
删除 | hdel user:1 name | 返回删除个数 |
计算个数 | hlen user:1 | 返回value中有多少个key-value的个数 |
批量新增 | hmset user:2 name hu age 18 sex 1 | 返回ok |
批量获取 | hmget user:2 name age sex | 返回三行:hu、18、1 |
判断field是否存在 | hexists user:2 name | 存在返回1,不存在返回0 |
获取所有field | hkeys user:2 | 返回name,age,sex三个filed |
获取user:2所有value | hvals user:2 | 返回:hu、18、1 |
获取user:2所有field和value | hgetall user:2 | name age sex hu 18 1 |
增加1 | hincrby user:2 age 1 | age+1 |
小数 | hincrbyfloat user:2 age 2 | 浮点型+2 |
四、LIST
详细类型:
列表:用来存储多个有序的字符串,一个列表最多可存2的32次方减1个元素
常用命令:
添加命令:
rpush james c b a //从右向左插入cba, 返回值3
lrange james 0 -1 //从左到右获取列表所有元素 返回 c b a
lpush key c b a //从左向右插入cba
linsert james before b teacher //在b之前插入teacher, after为之后,
使用lrange james 0 -1 查看:c teacher b a
查找命令:
lrange key start end //索引下标特点:从左到右为0到N-1
lindex james -1 //返回最右末尾a,-2返回b
llen james //返回当前列表长度
lpop james //把最左边的第一个元素c删除
rpop james //把最右边的元素a删除
五、SET
详细类型:
无序集合:保存多元素,与列表不一样的是不允许有重复元素,且集合是无序,一个集合 最多可存2的32次方减1个元素,除了支持增删改查,还支持集合交集、并集、差集;
常用命令:
exists user //检查user键值是否存在sadd user a b c //向user插入3个元素,返回3sadd user a b //若再加入相同的元素,则重复无效,返回0smember user //获取user的所有元素,返回结果无序srem user a //返回1,删除a元素scard user //返回2,计算元素个数
六、ZSet
详细类型:
有序集合:
常用命令:
zadd key score member [score member......]
zadd user:zan 200 james //james的点赞数1, 返回操作成功的条数1
zadd user:zan 200 james 120 mike 100 lee // 返回3
zadd test:1 nx 100 james //键test:1必须不存在,主用于添加
zadd test:1 xx incr 200 james //键test:1必须存在,主用于修改,此时为300
zadd test:1 xx ch incr -299 james //返回操作结果1,300-299=1
zrange test:1 0 -1 withscores //查看点赞(分数)与成员名
zcard test:1 //计算成员个数, 返回1
七、Redis全局命令
1,查看所有键:
keys * set school enjoy set hello worldkeys *ool -----> school
2,键总数 :
dbsize //2个键,如果存在大量键,线上禁止使用此指令
3,检查键是否存在:
exists key //存在返回1,不存在返回0
4,键过期:
expire key seconds //set name test expire name 10,表示10秒过期ttl key // 查看剩余的过期时间
5,键的数据结构类型:
type key //返回string,键不存在返回none
二、Redis数据结构相关推荐
- redis学习(二) redis数据结构介绍以及常用命令
redis数据结构介绍 我们已经知道redis是一个基于key-value数据存储的数据结构数据库,这里的key指的是string类型,而对应的value则可以是多样的数据结构.其中包括下面五种类型: ...
- 深入剖析Redis系列(七) - Redis数据结构之列表
前言 列表(list)类型是用来存储多个 有序 的 字符串.在 Redis 中,可以对列表的 两端 进行 插入(push)和 弹出(pop)操作,还可以获取 指定范围 的 元素列表.获取 指定索引下标 ...
- 深入剖析Redis系列(五) - Redis数据结构之字符串
前言 字符串类型 是 Redis 最基础的数据结构.字符串类型 的值实际可以是 字符串(简单 和 复杂 的字符串,例如 JSON.XML).数字(整数.浮点数),甚至是 二进制(图片.音频.视频),但 ...
- Redis数据结构以及对应存储策略
redis数据结构: String 可以是字符串也可以是数字,以及浮点数 List,一个链表,链表上每一个节点都包含一个字符串 set 包含字符串的无序手机其,特点是每一个字符都是唯一的 hash,包 ...
- zincrby redis python_【Redis数据结构 序】使用redis-py操作Redis数据库
想要看更加舒服的排版.更加准时的推送 关注公众号"不太灵光的程序员" 每日八点有干货推送 同时发布<[Redis数据结构 1序]1使用redis-py操作Redis数据库&g ...
- 你需要知道的那些 redis 数据结构(前篇)
戳蓝字"CSDN云计算"关注我们哦! 作者 | 饿了么物流技术团队 来源 | CSDN 企业博客 redis 对于团队中的同学们来说是非常熟悉的存在了,我们常用它来做缓存.或是实现 ...
- 在列表前方插入一个数据_通俗易懂的Redis数据结构基础教程
Redis有5个基本数据结构,string.list.hash.set和zset.它们是日常开发中使用频率非常高应用最为广泛的数据结构,把这5个数据结构都吃透了,你就掌握了Redis应用知识的一半了. ...
- Redis 数据结构的实现
Redis 数据结构的实现 先看个对照关系: Redis数据结构 实现一 实现二 string 整数(如果value能够表示为整数) 字符串 hash 压缩列表(只包含少量键值对, 并且每个键值对的键 ...
- Redis核心技术笔记——Redis数据结构
Redis底层数据结构 总体来说,大家都知道redis数据结构有String.List.Hash.Set.Sorted Set还有三种高级的数据结构Bit map.GEO.Hyperloglog. ...
- Redis数据结构Hash应用场景-存储商品、购物车、淘宝短链接、分布式Session、用户注册、发微博功能
Hash应用场景 Hash Hash应用场景 redis存储java对象常用String,那为什么还要用hash来存储? SpringBoot+redis+hash存储商品数据 短链接 场景1:淘宝短 ...
最新文章
- XML学习第三节 Schema介绍
- 关于Matconvnet中模型发布与共享的思考
- git中--soft和--mixed和--hard区别
- docker 查看日志_8个优秀Docker容器监控工具,收藏了
- ASP.NET Core 2.0使用Log4net实现记录日志功能
- win10--vs2015--libjpeg--64位库的编译过程记录
- apache服务 功能错误_如何使用Apache OpenWhisk开发功能即服务
- linux mysql密码相关问题
- 自动化机器人 rpa_机器人过程自动化和机器人的出现
- PYTHON语言开发公司工资条通知短信
- 如何在dev cpp中使用c++11标准
- fiddler抓包记录
- QT 如何在QPushButton上加载gif动图
- 连享会新命令 lxh:随时查看 Stata 资源
- Poi Excel 设置列宽计算公式
- umi hooks里的mutate使用方法
- EXCEPTION_ACCESS_VIOLATION异常
- 【爬虫实战】国家企业公示网-项目分析
- 【FNN分类】基于粒子群结合引力搜索算法优化前向反馈神经网络实现数据分类附matlab代码
- 如何快速读懂开源代码?