Redis入门系列数据类型及相关命令
2019独角兽企业重金招聘Python工程师标准>>>
一.Redis数据类型
Redis支持5中数据类型,分别是字符串(Strings),列表(Lists),集合(Sets),哈希(Hashes),有序集合(Sorted Sets)下面会分别介绍各个数据类型以及在redis客户端下相关命令。
二.字符串(Strings)
字符串类型是Redis中最基本的数据类型,能存储任何形式的字符串,包括二进制数据。可以使用字符串来存储json化的对象,持久化的对象,二进制流表示的图片等等。3.0之前字符串类型最大容量是512MB。这足够使用了。
2.1 命令
set key value localhost:6379> set name Tom 保存一个key为name,value为 Tom的键值对。
get key localhost:6379> get name 读取key为name的值
keys * localhost:6379> keys * 返回所有的key
incr key localhost:6379> incr age 当value是整数的时候可以使用这个命令对整数+1.原子性的操作
incrby key num localhost:6379> incrby age 10 当value是整数的时候,对value加上指定数。原子性
decr key localhost:6379> decr age 当value是整数的时候,对value减去1 , 原子性的
decrby key num localhost:6379> decrby age 10 当value是整数的时候,对value减去指定数,原子性
incrbyfloat key float localhost:6379> incrbyfloat price 0.9 当value是浮点数的时候,对value增加指定浮点数数,原子性
decrbyfloat key float localhost:6379> decrbyfloat price 0.9 当value是浮点数的时候,对value减去指定浮点数数,原子性
append key value localhost:6379> append name Jack 把value追加到相应key的value后面
localhost:6379> mset city ShangHai nation China 同时设置多个key-value
OK
localhost:6379> mget city nation 同时获取多个key-value
1) "ShangHai"
2) "China"
二.散列类型(Hashes)
当我们存一个对象的时候一般是把这个对象进行序列化,然后存在redis中,在需要对象里面某个字段的时候,从redis中读取对象序列化的value,对这个对象进行反序列化,再获得我们需要的某个字段,这造成很大的浪费。如果想要读取那个字段就可以直接读取某个字段多好。关系型数据库就是这样做的,但是对于某一些对象我有某些字段,某些对象我没有某些字段,这样关系型数据库就做不到了。在散列类型中一个key最多有2^32-1个字段。
Redis的散列类型就能做到。一个key对于多个filed,一个filed对于一个value。
localhost:6379> hset student:001 name Tom
(integer) 1
localhost:6379> hset student:001 age 25
(integer) 1
localhost:6379> hset student:001 city ShangHai
(integer) 1
localhost:6379> hget student:001 name
"Tom"
localhost:6379> hget student:001 age
"25"
localhost:6379> hget student:001 city
"ShangHai"
key为student:001的学生有三个字段,分别是name = Tom , age = 25,city = ShangHai
在这里需要注意一个事情,就是使用hset的时候,如果字段以及存在了,则会更新数据,然后返回0,如果字段不存在,则会新建字段插入数据,然后返回1。
当然我们也可以批量添加和查询操作
localhost:6379> hmset student:002 name Jck age 25 city BeiJing
OK
localhost:6379> hmget student:002 name age city
1) "Jck"
2) "25"
3) "BeiJing"
或者
localhost:6379> hgetall student:002
1) "name"
2) "Jck"
3) "age"
4) "25"
5) "city"
6) "BeiJing"
或者 获取某个key的所有字段的值
localhost:6379> hvals student:001
1) "123"
2) "35"
3) "ShangHai"
4) "80kg"
增加数字
localhost:6379> hincrby student:001 age 10
(integer) 35
当字段不存在时,会自动创建字段,并赋值。
获取字段数量
localhost:6379> hlen student:002
(integer) 3
删除字段
localhost:6379> hdel student:001 ages
(integer) 1
三.列表类型(Lists)
列表类型可以存储一个有序的字符串列表,常用的操作是向列表两端添加元素,或者获取列表中某一段的值。列表类型在Redis中是使用的双向链表实现的。查询头尾比较近的元素相当快,但是通过索引去访问元素就比较慢了。这种特性是的Redis适合用来做关心最新数据的一些功能,如微博上新鲜事,新闻中今日新闻,热点新闻。也适合记录日志,因为添加日志不会受到已有的日志数量的影响。借助列表类型,Redis可以作为队列或者栈来使用。一个列表类型最多容纳2^32-1个元素。
3.1往列表里面添加,从左边插入
localhost:6379> lpush numbers 5 4 3 2 1
(integer) 5
现在数列里面顺序从左到右是 1 2 3 4 5
3.2往列表里面添加,从右边插入
localhost:6379> rpush numbers 5 4 3 2 1
(integer) 10
现在数列里面顺序从左到右是 1 2 3 4 5 5 4 3 2 1
3.3查看数列值
localhost:6379> lrange numbers 0 101) "1"2) "2"3) "3"4) "4"5) "5"6) "5"7) "4"8) "3"9) "2"
10) "1"
localhost:6379> lrange numbers 0 0
1) "1"
在redis里面下标从0 开始,lrange numbers 0 10 是指从下标为0的开始到下标为10的元素。 lrange numbers 0 0 查下标为0的元素开始到下标为0的元素结束,也就是左边第一个元素。负数代表从右边第几个开始,-1表示右边第一个,-2表示右边第二个。 lrange numbers 0 -1表示显示整个数列
3.4从左边弹出一个元素
localhost:6379> lpop numbers
"1"
localhost:6379> lrange numbers 0 -1
1) "2"
2) "3"
3) "4"
4) "5"
5) "5"
6) "4"
7) "3"
8) "2"
9) "1"
可以通过lrange看到左边第一个元素被弹出了。
3.5从右边弹出一个元素
localhost:6379> rpop numbers
"1"
localhost:6379> lrange numbers 0 -1
1) "2"
2) "3"
3) "4"
4) "5"
5) "5"
6) "4"
7) "3"
8) "2"
可以看到右边第一个元素被弹出了。
3.6获取列表中元素的个数
localhost:6379> llen numbers
(integer) 8
3.7 删除列表中指定的值
localhost:6379> lrem numbers 1 2
(integer) 1
删除从列表删除前1一个值为2的元素
lrem numbers count value
count>0 : 从左边开始删除count个值为value的元素。
count <0 : 从右边开始删除count个值为value的元素。
count = 0 : 删除所有值为value的元素
3.8 根据下标位置获取元素
localhost:6379> lindex numbers 0
"4"
localhost:6379> lindex numbers 1
"5"
localhost:6379> lindex numbers -1
"4"
3.9 修改元素的值
localhost:6379> lset numbers 0 10
OK
localhost:6379> lindex numbers 0
"10"
3.10 只保留某个范围的元素
localhost:6379> lrange numbers 0 -1
1) "10"
2) "5"
3) "5"
4) "4"
localhost:6379> ltrim numbers 1 2
OK
localhost:6379> lrange numbers 0 -1
1) "5"
2) "5"
3.8 队列和栈的实现
聪明的你一定想到了
lpush配合rpop(或者rpush配合lpop)就实现先入先出的一个队列了。
lpush配合lpop(或者rpush配合rpop) 就实现后进先出的一个栈了。
四.集合类型(Set)
集合里面没有顺序,每个元素都不同,与java中set有点类似。Redis中集合类型可以存储最好2^32-1个元素。Redis中集合类型使用hash table 实现的,就类似java中的HahsMap的数据结构。
4.1向集合中添加元素
localhost:6379> sadd letters a b c d
(integer) 4
4.2查询集合中所有元素
localhost:6379> smembers letters
1) "b"
2) "a"
3) "c"
4) "d"
4.3 从集合中删除元素
localhost:6379> srem letters b a
(integer) 2
localhost:6379> smembers letters
1) "c"
2) "d"
4.4 查询集合中是否存在
localhost:6379> sismember letters c
(integer) 1
4.5 集合间的运算
4.5.1 求两个集合的差集 属于集合A不属于集合B
localhost:6379> sadd seta a b c d
(integer) 4
localhost:6379> sadd setb c d
(integer) 2
localhost:6379> sdiff seta setb
1) "b"
2) "a"
{a,b,c,d} -{c,d} = {a.b}
4.5.2 求两个集合交集
localhost:6379> sinter seta setb
1) "c"
2) "d"
{a,b,c,d} ∩{c,d} = {c,d}
4.5.3 求两个集合的并集
localhost:6379> sunion seta setb
1) "a"
2) "c"
3) "d"
4) "b"
4.6获得集合中元素个数
localhost:6379> scard seta
(integer) 4
五.有序集合(Sorted Set)
很显然就是一个集合,但是元素是有序的。
5.1 向有序集合中添加
localhost:6379> zadd scoreset 80 Tom 90 Jack 40 Devil
(integer) 3
如果元素已经存在则修改元素的值
5.2 查询某个元素的值
localhost:6379> zscore scoreset Jack
"90"
5.3 根据下标位置查询
localhost:6379> zrange scoreset 0 -1
1) "Devil"
2) "Tom"
3) "Jack"localhost:6379> zrange scoreset 0 -1 withscores
1) "Devil"
2) "40"
3) "Tom"
4) "80.5"
5) "Jack"
6) "90"
5.4 获取指定分数范围的元素
localhost:6379> zrange scoreset 0 -1 withscores
1) "Devil"
2) "40"
3) "Tom"
4) "80.5"
5) "Jack"
6) "90"
转载于:https://my.oschina.net/u/2250599/blog/424038
Redis入门系列数据类型及相关命令相关推荐
- Redis五大基本数据类型及其相关命令及常用用途
String String类型,可以用来存储字符串.整型.浮点型数据.甚至二进制数据(因为redis的String类型是二进制安全的). 常用命令: #设置多个值,原子性. mset aaa 2673 ...
- Redis 入门系列-redis-redis 是什么,redis 的优点
导航 Redis 入门系列-redis-redis 是什么,redis 的优点 Redis 入门系列-redis-redis 和 memcached 的区别(总结) Redis 入门系列-redis- ...
- Redis基础篇-(入门、数据类型、通用命令、Jedis)
windows系统环境 目录 Redis入门 问题现象: 罪魁祸首---关系型数据库 解决思路 Nosql 常见的Nosql数据库: 解决方案(电商场景): Redis简介 Redis的应用 Redi ...
- Redis入门与数据类型介绍
一.Redis 概述 Redis 概念 Redis : REmote DIctionary Server(远程字典服务器). Redis 是完全开源免费的,用C语言编写的,遵守BSD 协议,是一个高性 ...
- 【Redis】基于Redis6的数据类型以及相关命令、应用场景整理
文章目录 数据类型与命令 常用 字符串(String) 列表(List) 集合(Set) 有序集合(Sorted Set) 哈希(Hash) 特殊 地理位置(GEO) 流(Stream) 基数统计(H ...
- redis入门和数据类型
业务数据的特殊性 附加功能 系统功能优化或升级 单服务器升级集群 Session 管理 Token 管理数据存储类型介绍 string hash list set so ...
- redis入门系列(一)redis安装部署
2019独角兽企业重金招聘Python工程师标准>>> 用了redis一年多了,虽然原理和命令都了解,应付日常工作绰绰有余,但是从没从头到尾的去学习一下redis.从个人经历来讲,这 ...
- redis入门(数据类型)
数据类型 1) 字符串类型 string 2) 哈希类型 hash: map 3) 列表类型 list: linkedlist格式.支持重复元素4) 集合类型 set: 不允许重复元素5) 有序集合类 ...
- kafka java api 删除_Kafka入门系列—6. Kafka 常用命令及Java API使用
常用命令 启动Zookeeper ./zkServer.sh start-foreground 可选参数: ./zkServer.sh {start|start-foreground|stop|res ...
最新文章
- python零基础怎么学-python 零基础该怎么学?
- time,gettimeofday,clock_gettime,_ftime
- 个人的web开发心得(八)----------非常适合入门新手,都是常识
- CRM Fiori应用里My Opportunity - My Appointment中My的准确含义
- .NET core3.1使用cookie进行身份认证
- 转件工程--实践者的研究方法阅读笔记1
- 【UIKit】键盘设计2
- MathType编辑器安装(写公式)
- la4080 Warfare And Logistics 罗列+最短
- 局域网ip扫描工具_IP Scanner Pro——ip局域网扫描工具
- html5演讲ppt,制作ppt太麻烦?用上这5款黑科技PPT模板,汇报、演讲瞬间高大上
- 个人信息安全规范----1、个人信息安全术语及定义
- 不对外开放的微信小程序审核时不通过,因为无法提供测试账号导致审核人员登录失败解决办法!
- 百谷歌---学习工作好东西啊!!
- 马毅:低维模型与深度模型的殊途同归(神经网络、压缩感知和低秩分解与补全)
- sql server中的while循环语句
- 大狼痛心疾首的碎碎念
- Golden Dream - 8月
- 【渝粤教育】国家开放大学2018年春季 0463-21T英语语音 参考试题
- 使用nexus搭建局域网私服Maven仓库(Windows版)
热门文章
- oracle起定时任务,每隔1秒执行一次
- validation problems were found problem cvc-complex-type.2.4a
- ScrollView详解
- js如何判断访问来源是来自搜索引擎(蜘蛛人)还是直接访问
- I.MX6 android 获取framebuffer信息
- 使用Emacs执行外部shell命令
- javascript date utc
- LibreOJ#6030. 「雅礼集训 2017 Day1」矩阵
- [HDU1712]ACboy needs your help
- Android:手把手教你打造可缩放移动的ImageView(下)