有关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的五大基本数据类型相关推荐

  1. Redis中五大基本数据类型和三种特殊数据类型详解

    目录 介绍 概念 基本命令 redis是单线程的 五大基本数据类型 String 命令 应用场景 List 命令 应用场景 Set 命令 应用场景 Hash 命令 应用场景 Zset 命令 应用场景 ...

  2. 解析Redis操作五大数据类型常用命令

    摘要:分享经常用到一些命令和使用场景总结,以及对Redis中五大数据类型如何使用cmd命令行的形式进行操作的方法. 本文分享自华为云社区<Redis操作五大数据类型常用命令解析>,作者:灰 ...

  3. NoSQL(1)之 Redis的五大数据类型使用方法的详细介绍

    Redis的五大数据类型也称五大数据对象:了解过6大数据结构,Redis并没有直接使用这些结构来实现键值对数据库,而是使用这些结构构建了一个对象系统redisObject:这个对象系统包含了五大数据对 ...

  4. redis之五大数据类型

    redis之五大数据类型 redis redis的两种链接方式 简单链接 1234 import redisconn = redis.Redis(host='10.0.0.200',port=6379 ...

  5. redis的zset的底层实现_Redis(三)--- Redis的五大数据类型的底层实现

    1.简介 Redis的五大数据类型也称五大数据对象:前面介绍过6大数据结构,Redis并没有直接使用这些结构来实现键值对数据库,而是使用这些结构构建了一个对象系统redisObject:这个对象系统包 ...

  6. 配置文件存int类型_Redis详解(五)------ redis的五大数据类型实现原理

    > 本系列教程持续更新,可以微信搜索「 IT可乐 」第一时间阅读.回复<电子书>有我为大家特别筛选的书籍资料 前面两篇博客,第一篇介绍了五大数据类型的基本用法,第二篇介绍了Redis ...

  7. Redis常用五大数据类型

    1.String(字符串) string类型是二进制安全的.意思是redis的string可以包含任何数据.比如jpg图片或者序列化的对象 . string类型是Redis最基本的数据类型,一个red ...

  8. Redis的五大数据类型

    1.String(字符串) String是Redis最基本的类型,一个Key对应一个Value. String类型是二进制安全的,意思是Redis的String可以包含任何数据,比如jpg图片或者序列 ...

  9. Redis五大基本数据类型(String、LIst、Set、Hash、ZSet)及其底层结构

    文章目录 零.Redis中Key相关操作 一.字符串(String) 二.列表(List) 三.集合(Set) 四.哈希(Hash) 五.有序集合(Zset) 零.Redis中Key相关操作 keys ...

最新文章

  1. RabbitMQ死信队列,延时队列
  2. 从粒子到宇宙的旅行指南
  3. TCP/IP(四) —— TCP可靠传输的实现
  4. android view自定义
  5. [C++调试笔记]网格划分grid_pic.cpp
  6. 【机器学习基础】优化算法详解
  7. boost::fusion::nil用法的测试程序
  8. java kaptcha_java相关:kaptcha验证码使用方法详解
  9. 初识ABP vNext(3):vue对接ABP基本思路
  10. 【AI视野·今日Robot 机器人论文速览 第二十八期】Wed, 1 Dec 2021
  11. 中级php工程师书籍,中级PHP工程师
  12. itop 安装时碰到的Missing PHP extension mysqli soap ldap
  13. ssas计算度量_如何在Analysis Services(SSAS)中创建中间度量
  14. CF1109F Sasha and Algorithm of Silence's Sounds LCT、线段树
  15. 使用switchhost进行host文件管理
  16. numpy读取txt文件
  17. ntfs是什么硬盘?ntfs硬盘如何在苹果电脑使用
  18. 为什么现在社交电商这么火?
  19. OSChina 周五乱弹 —— 美团外卖程序崩溃的真相
  20. 一个野生程序员的自我修养

热门文章

  1. 执业医师考试该如何备考?
  2. explain使用方法及结果分析
  3. linux维修显卡软件,NV发布Linux显卡290.10版驱动:修复诸多Bug
  4. 记录一个视频加密解密--AES 进阶版 (EVP)
  5. MVC自定义路由地址
  6. C语言——二进制转十六进制
  7. 为什么将.jsp 文件放在WEB-INF 目录中?
  8. SCS【10】单细胞转录组之差异表达分析 (Monocle 3)
  9. 把MacBook里的电影导入到iPad
  10. 百度地图海量数据打点整理