Redis的五大基本数据类型
有关Redis-Key的一些常用命令
127.0.0.1:6379> set name zzd
OK
127.0.0.1:6379> get name
"zzd"
127.0.0.1:6379> EXISTS name 判断当前key——name是否存在
(integer) 1
127.0.0.1:6379> move name 1 移除name
(integer) 1
127.0.0.1:6379> get name
(nil)
127.0.0.1:6379> keys *
(empty array)
127.0.0.1:6379> set 34 iiii
OK
127.0.0.1:6379> set 20 sjdoihfl
OK
127.0.0.1:6379> EXPIRE 20 10 为key——20设置10s后过期
(integer) 1
127.0.0.1:6379> ttl 20 查看20还剩下多长时间过期,-2代表已经删除
(integer) -2
127.0.0.1:6379> keys *
1) "34"
127.0.0.1:6379> get 20
(nil)
127.0.0.1:6379> TYPE 34 查看当前key的类型
string
String
127.0.0.1:6379> APPEND key1 "nihao" 为key——key1后追加字符串,如果没有当前key,就相当于set key
(integer) 7
127.0.0.1:6379> get key1
"v1nihao"
127.0.0.1:6379> STRLEN key1 获取key的长度
(integer) 7
127.0.0.1:6379>
**************************************
127.0.0.1:6379> set views 0
OK
127.0.0.1:6379> get views
"0"
127.0.0.1:6379> incr views 自增1
(integer) 1
127.0.0.1:6379> incr views
(integer) 2
127.0.0.1:6379> decr views 自减1
(integer) 1
127.0.0.1:6379> decr views
(integer) 0
127.0.0.1:6379> INCRBY views 10 自增10
(integer) 10
127.0.0.1:6379> get views
"10"
127.0.0.1:6379> DECRBY views 8 自减8
(integer) 2
127.0.0.1:6379> get views
"2"
*******************************************
127.0.0.1:6379> get key1
"v1nihao"
127.0.0.1:6379> GETRANGE key1 0 3 获得key1字符串的子串从0到3
"v1ni"
127.0.0.1:6379> GETRANGE key1 0 -1 获得key1字符串全部的串
"v1nihao"
*&*************************************
127.0.0.1:6379> get k2
"abcdefg"
127.0.0.1:6379> SETRANGE k2 1 xx 从字符串1处开始字符串替换
(integer) 7
127.0.0.1:6379> get k2
"axxdefg"
**********************************************
# setex 设置过期时间
# setnx (set if not exist) 不存在设置 (在分布式锁中使用)
127.0.0.1:6379> setex yy 10 ojdijdhj setex key seconds values
OK
127.0.0.1:6379> setnx 888 "ssss"
(integer) 1
127.0.0.1:6379> get 888
"ssss"
127.0.0.1:6379> setnx 888 "ssss"
(integer) 0
**************************************************
同时设置、获取多个值mset、mget
127.0.0.1:6379> mset k1 v1 k2 v2 k3 v3
OK
127.0.0.1:6379> keys *
1) "k2"
2) "k1"
3) "k3"
127.0.0.1:6379> mget k1 k2 k3
1) "v1"
2) "v2"
3) "v3"
127.0.0.1:6379> msetnx k1 v1 k4 v4 #msetnx是一个原子操作,要么一起成功,要么一起失败
(integer) 0
*****************************************************
getset
127.0.0.1:6379> getset 78 "ssss"
(nil)
127.0.0.1:6379> getset 78 "uuuu"
"ssss"
127.0.0.1:6379> get 78
"uuuu"
String使用场景:除了字符串,还可以作为数值,使用INCRBY 或DECRBY进行计算。
List
基本的数据类型,列表。可以将list作为栈、队列、阻塞队列。
所有list命令均是l开头的
127.0.0.1:6379> LPUSH list one #LPUSH 将一个或多个值插入到列表头部
(integer) 1
127.0.0.1:6379> LPUSH list two
(integer) 2
127.0.0.1:6379> LPUSH list three
(integer) 3
127.0.0.1:6379> LRANGE list 0 -1 #获取列表内所有的值
1) "three"
2) "two"
3) "one"
127.0.0.1:6379> LRANGE list 0 1 #获取列表内0-1的值
1) "three"
2) "two"
127.0.0.1:6379> RPUSH list four #RPUSH 将一个或多个值插入到列表尾部
(integer) 4
127.0.0.1:6379> LRANGE list 0 -1
1) "three"
2) "two"
3) "one"
4) "four"
###################################################
LPOP、RPOP
127.0.0.1:6379> LPOP list 移除list头元素
"three"
127.0.0.1:6379> RPOP list 移除list尾元素
"four"
127.0.0.1:6379> LRANGE list 0 -1
1) "two"
2) "one"
127.0.0.1:6379> RPOP list 2 移除list尾2个元素
1) "one"
2) "two"
127.0.0.1:6379> LRANGE list 0 -1
(empty array)
####################################################
127.0.0.1:6379> LPUSH list 1 2 3
(integer) 3
127.0.0.1:6379> lindex list 0 通过下标获得list中的某个值
"3"
127.0.0.1:6379> lindex list 1
"2"
##################################################
127.0.0.1:6379> LLEN list 获得list中的元素个数
(integer) 3
##################################################
移除具定的值
LREM list 1 one
移除list集合内的one元素一次
127.0.0.1:6379> LRANGE list 0 -1
1) "five\\"
2) "four"
3) "three"
4) "two"
5) "one"
6) "one"
127.0.0.1:6379> LREM list 1 one
(integer) 1
127.0.0.1:6379> LRANGE list 0 -1
1) "five\\"
2) "four"
3) "three"
4) "two"
5) "one"
##################################################
trim修剪
127.0.0.1:6379> LTRIM list 2 4 通过下标截取[2,4]的元素
OK
127.0.0.1:6379> LRANGE list 0 -1
1) "three"
2) "two"
3) "one"
################################################
rpoplpush 源列表 目标列表
lpoprpush 源列表 目标列表
################################################
lset list 0 "item"
将列表中指定下标的值替换成为另一个值,更新操作
如果不存在,则报错
################################################
linsert 插入一个值到列表中某个元素的前面或后面
LINSERT list before "two" "io"在list中的"two"元素前插入一个元素"io"
LINSERT list after "io" "io1"在list中的"io"元素后插入一个元素"io1"
Set(集合)
set中的值不可以重复,
127.0.0.1:6379> SADD myset "23" 向集合中添加元素
(integer) 1
127.0.0.1:6379> SADD myset "24"
(integer) 1
127.0.0.1:6379> SADD myset "24"
(integer) 0
127.0.0.1:6379> SMEMBERS myset 查看集合中所有的值
1) "24"
2) "kjkijk"
3) "23"
127.0.0.1:6379> SISMEMBER myset "hello" 判断“hello”是否为myset集合内的元素
(integer) 0
127.0.0.1:6379> SCARD myset 获取myset集合中元素的个数
(integer) 3
127.0.0.1:6379> srem myset "24" 移除myset中的"24"元素
(integer) 1
127.0.0.1:6379> SISMEMBER myset "24"
(integer) 0
127.0.0.1:6379> SRANDMEMBER myset 1 从myset集合中随机选取1个元素
1) "kjkijk"
127.0.0.1:6379> SRANDMEMBER myset 1
1) "23"
127.0.0.1:6379> SRANDMEMBER myset 2 从myset集合中随机选取2个元素
1) "kjkijk"
2) "23"
########################################################
删除指定的key,随机删除key
127.0.0.1:6379> spop myset 随机删除一些集合中的元素
"23"
127.0.0.1:6379> SMEMBERS myset
1) "kjkijk"
########################################################
将集合中的一个元素移动到另一个集合中
SMOVE set1 set2 "222"
将set1集合中的“222”元素移动到set2集合中
127.0.0.1:6379> SADD set1 "111" "222" "333"
(integer) 3
127.0.0.1:6379> SADD set2 "11" "22" "33"
(integer) 3
127.0.0.1:6379> SMOVE set1 set2 "222"
(integer) 1
127.0.0.1:6379> SMEMBERS set2
1) "11"
2) "22"
3) "33"
4) "222"
########################################################
集合的差集、交集、并集
SDIFF set1 set2 差集
SINTER set1 set2 交集
SUNION set1 set2 并集
127.0.0.1:6379> SADD set2 "11" "22" "33"
(integer) 3
127.0.0.1:6379> SADD set1 "111" "222" "333"
(integer) 3
127.0.0.1:6379> SADD set2 "222"
(integer) 1
127.0.0.1:6379> SDIFF set1 set2
1) "111"
2) "333"
127.0.0.1:6379> SINTER set1 set2
1) "222"
127.0.0.1:6379> SUNION set1 set2
1) "11"
2) "22"
3) "33"
4) "111"
5) "222"
6) "333"
Hash
Map集合,key-value,key-map
本质和String类型没有太大区别,还是一个简单的key-value
hset myhash field1 “zzd” 设置一个具体的key-value
hmset myhash filed3 “sss” filed4 “world” 设置多个key-value
hmset myhash filed3 “sss” filed4 “world” 获得多个key-value
hget myhash field2 获取某个具体的key-value
127.0.0.1:6379> hset myhash field1 "zzd"
(integer) 1
127.0.0.1:6379> hset myhash field2 "zk"
(integer) 1
127.0.0.1:6379> hget myhash field1
"zzd"
127.0.0.1:6379> hget myhash field2
"zk"
127.0.0.1:6379> hget myhash field3
(nil)
127.0.0.1:6379> hmset myhash filed3 "sss" filed4 "world"
OK
127.0.0.1:6379> hmget myhash filed3 filed4
1) "sss"
2) "world"
127.0.0.1:6379> hgetall myhash 获得hash中所有值
1) "field1"
2) "zzd"
3) "field2"
4) "zk"
5) "filed3"
6) "sss"
7) "filed4"
8) "world"
###############################################
127.0.0.1:6379> hdel myhash filed3 删除集合中某个指定的key
(integer) 1
127.0.0.1:6379> hlen myhash 获得hash集合大小
(integer) 3
#####################################################
127.0.0.1:6379> HEXISTS myhash field2 判断hash中是否存在某个key
(integer) 1
127.0.0.1:6379> HEXISTS myhash field
(integer) 0
#################################################
127.0.0.1:6379> hkeys myhash 获得hash集合中所有的key
1) "field1"
2) "field2"
3) "filed4"
127.0.0.1:6379> hvals myhash 获得hash集合中所有的value
1) "zzd"
2) "zk"
3) "world"
###############################################
127.0.0.1:6379> hset myhash num1 "5"
(integer) 1
127.0.0.1:6379> hset myhash num2 "3"
(integer) 1
127.0.0.1:6379> HINCRBY myhash num1 1 将hash中的数值增加1
(integer) 6
127.0.0.1:6379> HGET myhash num1
"6"
127.0.0.1:6379> HINCRBY myhash num1 -1 将hash中的数值增加-1
(integer) 5
127.0.0.1:6379> HGET myhash num1
"5"
127.0.0.1:6379> HSETNX myhash num1 2 如果hash中不存在key-num1,将设置num1为2
(integer) 0
127.0.0.1:6379> HSETNX myhash num3 2 如果hash中不存在key-num3,将设置num3为2
(integer) 1
127.0.0.1:6379> hget myhash num3
"2"
hash更适合于对象的存储,String更适合字符串存储
Zset(有序集合)
在set基础上增加了一个值,zset k1 score1 v1
127.0.0.1:6379> zadd myzset 1 one 向myzset有序集合中增加元素
(integer) 1
127.0.0.1:6379> zadd myzset 2 two 3 three 增加多个
(integer) 2
127.0.0.1:6379> ZRANGE myzset 0 -1 查看所有元素
1) "one"
2) "two"
3) "three"
###############################################
127.0.0.1:6379> ZRANGEBYSCORE myzset -inf +inf 对zset集合中的元素按照score进行升序排列
1) "one"
2) "two"
3) "three"
127.0.0.1:6379> ZRANGEBYSCORE myzset -inf +inf withscores 对zset集合中的元素按照score进行升序排列并显示数值
1) "one"
2) "1"
3) "two"
4) "2"
5) "three"
6) "3"
127.0.0.1:6379> ZRANGEBYSCORE myzset 1 2 withscores 对zset集合中的在[1,2]的元素按照score进行升序排列
1) "one"
2) "1"
3) "two"
4) "2"
127.0.0.1:6379> ZREVRANGEBYSCORE myzset +inf -inf 对zset集合中的元素按照score进行降序排列
1) "three"
2) "two"
3) "one"
##############################################
127.0.0.1:6379> zrem myzset one 移除集合中的指定元素
(integer) 1
127.0.0.1:6379> ZRANGE myzset 0 -1
1) "two"
2) "three"
127.0.0.1:6379> ZCARD myzset 获取有序集合中的个数
(integer) 2
127.0.0.1:6379> zcount myzset 1 2 统计有序集合中在[1,2]中的元素个数
(integer) 1
127.0.0.1:6379> zcount myzset 3 5
(integer) 1
Redis的五大基本数据类型相关推荐
- Redis中五大基本数据类型和三种特殊数据类型详解
目录 介绍 概念 基本命令 redis是单线程的 五大基本数据类型 String 命令 应用场景 List 命令 应用场景 Set 命令 应用场景 Hash 命令 应用场景 Zset 命令 应用场景 ...
- 解析Redis操作五大数据类型常用命令
摘要:分享经常用到一些命令和使用场景总结,以及对Redis中五大数据类型如何使用cmd命令行的形式进行操作的方法. 本文分享自华为云社区<Redis操作五大数据类型常用命令解析>,作者:灰 ...
- NoSQL(1)之 Redis的五大数据类型使用方法的详细介绍
Redis的五大数据类型也称五大数据对象:了解过6大数据结构,Redis并没有直接使用这些结构来实现键值对数据库,而是使用这些结构构建了一个对象系统redisObject:这个对象系统包含了五大数据对 ...
- redis之五大数据类型
redis之五大数据类型 redis redis的两种链接方式 简单链接 1234 import redisconn = redis.Redis(host='10.0.0.200',port=6379 ...
- redis的zset的底层实现_Redis(三)--- Redis的五大数据类型的底层实现
1.简介 Redis的五大数据类型也称五大数据对象:前面介绍过6大数据结构,Redis并没有直接使用这些结构来实现键值对数据库,而是使用这些结构构建了一个对象系统redisObject:这个对象系统包 ...
- 配置文件存int类型_Redis详解(五)------ redis的五大数据类型实现原理
> 本系列教程持续更新,可以微信搜索「 IT可乐 」第一时间阅读.回复<电子书>有我为大家特别筛选的书籍资料 前面两篇博客,第一篇介绍了五大数据类型的基本用法,第二篇介绍了Redis ...
- Redis常用五大数据类型
1.String(字符串) string类型是二进制安全的.意思是redis的string可以包含任何数据.比如jpg图片或者序列化的对象 . string类型是Redis最基本的数据类型,一个red ...
- Redis的五大数据类型
1.String(字符串) String是Redis最基本的类型,一个Key对应一个Value. String类型是二进制安全的,意思是Redis的String可以包含任何数据,比如jpg图片或者序列 ...
- Redis五大基本数据类型(String、LIst、Set、Hash、ZSet)及其底层结构
文章目录 零.Redis中Key相关操作 一.字符串(String) 二.列表(List) 三.集合(Set) 四.哈希(Hash) 五.有序集合(Zset) 零.Redis中Key相关操作 keys ...
最新文章
- RabbitMQ死信队列,延时队列
- 从粒子到宇宙的旅行指南
- TCP/IP(四) —— TCP可靠传输的实现
- android view自定义
- [C++调试笔记]网格划分grid_pic.cpp
- 【机器学习基础】优化算法详解
- boost::fusion::nil用法的测试程序
- java kaptcha_java相关:kaptcha验证码使用方法详解
- 初识ABP vNext(3):vue对接ABP基本思路
- 【AI视野·今日Robot 机器人论文速览 第二十八期】Wed, 1 Dec 2021
- 中级php工程师书籍,中级PHP工程师
- itop 安装时碰到的Missing PHP extension mysqli soap ldap
- ssas计算度量_如何在Analysis Services(SSAS)中创建中间度量
- CF1109F Sasha and Algorithm of Silence's Sounds LCT、线段树
- 使用switchhost进行host文件管理
- numpy读取txt文件
- ntfs是什么硬盘?ntfs硬盘如何在苹果电脑使用
- 为什么现在社交电商这么火?
- OSChina 周五乱弹 —— 美团外卖程序崩溃的真相
- 一个野生程序员的自我修养