文章目录

  • 字符串(strings)
  • 散列(hashes)
  • 列表(lists)
  • 集合(sets)
  • 有序集合(sorted sets)

字符串(strings)

  1. 开启redis服务并连接
[root@localhost bin]# redis-server config/redis.conf
[root@localhost bin]# redis-cli -p 6379
127.0.0.1:6379> ping
PONG
127.0.0.1:6379> flushall  # 情空数据库中的所有数据
OK
  1. 相关操作

(a)setget

127.0.0.1:6379> set key1 value1
OK
127.0.0.1:6379> get key1
"value1"

(b)EXISTS key查看当前key是否存在 :1存在,0不存在

127.0.0.1:6379> EXISTS key1
(integer) 1

( c)type key查看key对应的类型

127.0.0.1:6379> type key1
string

(d)APPEND key value 追加一个value到key上,返回为key的长度

127.0.0.1:6379> APPEND key1 "hello"
(integer) 11
127.0.0.1:6379> get key1
"value1hello"

(e)keys *查看所有的key

127.0.0.1:6379> keys *
1) "key1"

(f)STRLEN key查看key的长度

127.0.0.1:6379> STRLEN key1
(integer) 11

(g)move key db把key移到第db个数据库中

127.0.0.1:6379> move key1 1
(integer) 1

(h)EXPIRE key seconds设置key的过期时间,单位秒。ttl key查看key还有多就过期

127.0.0.1:6379> EXPIRE name 6
(integer) 1
127.0.0.1:6379> ttl name
(integer) 2
127.0.0.1:6379> ttl name
(integer) 1
127.0.0.1:6379> ttl name
(integer) -2

(i)incr key:可以对应value++,decr key:value - -,incrby views 10decrby views 5是设置步长的加减

127.0.0.1:6379> set views 0
OK
127.0.0.1:6379> get views
"0"
127.0.0.1:6379> incr views
(integer) 1
127.0.0.1:6379> incr views
(integer) 2
127.0.0.1:6379> get views
"2"
127.0.0.1:6379> decr views
(integer) 1
127.0.0.1:6379> decr views
(integer) 0
127.0.0.1:6379> decr views
(integer) -1
127.0.0.1:6379> get views
"-1"
127.0.0.1:6379> incrby views 10
(integer) 9
127.0.0.1:6379> decrby views 5
(integer) 4

(j)字符串范围:getrang key i j

127.0.0.1:6379> set key1 hello,world
OK
127.0.0.1:6379> get key1
"hello,world"
127.0.0.1:6379> GETRANGE key1 0 3
"hell"
127.0.0.1:6379> GETRANGE key1 0 -1
"hello,world"
127.0.0.1:6379>

(k)字符串替换:`SETRANGE key2 2 xxx

127.0.0.1:6379> set key2 abcdefgh
OK
127.0.0.1:6379> get key2
"abcdefgh"
127.0.0.1:6379> SETRANGE key2 2 xxx
(integer) 8
127.0.0.1:6379> get key2
"abxxxfgh"

(l)setex key3 30 "hello"设置过期时间,SETNX key4 "world":不存在设置

127.0.0.1:6379> setex key3 30 "hello"
OK
127.0.0.1:6379> ttl key3
(integer) 23
127.0.0.1:6379> get key3
"hello"
127.0.0.1:6379> SETNX key4 "world"  # key4不存在,创建key4
(integer) 1
127.0.0.1:6379> keys *
1) "key2"
2) "key4"
3) "key1"
127.0.0.1:6379> setnx key4 "hi" # key4存在,创建失败
(integer) 0
127.0.0.1:6379> get key4
"world"

(m)设置多个key-value:mset k1 v1 k2 v2 k3 v3,取多个key的value:mget k1 k2 k3

27.0.0.1:6379> flushdb
OK
127.0.0.1:6379> mset k1 v1 k2 v2 k3 v3
OK
127.0.0.1:6379> keys *
1) "k3"
2) "k2"
3) "k1"
127.0.0.1:6379> mget k1 k2 k3
1) "v1"
2) "v2"
3) "v3"
127.0.0.1:6379> msetnx k2 v4 k5 v5 # k2设置过了,失败,原子性操作,k5设置失败
(integer) 0
127.0.0.1:6379> keys *
1) "k3"
2) "k2"
3) "k1"
127.0.0.1:6379>

(n)设置对象

127.0.0.1:6379> set user:1 {name:zhangsan,age:3} # 设置user:1对象,json保存
OK
127.0.0.1:6379> mset user:1:name zhangsan user:1:age 3
OK
127.0.0.1:6379> get user:1
"{name:zhangsan,age:3}"
127.0.0.1:6379> mget user:1:name user:1:age
1) "zhangsan"
2) "3"

(o)getset存在这个key,返回这个key的value,不存在返回null并创建

127.0.0.1:6379> getset k9 hi
(nil)
127.0.0.1:6379> get k9
"hi"
127.0.0.1:6379> getset k9 hello
"hi"

散列(hashes)

哈希,类似map集合,前面的是key-value,这里是key-Map。

  1. hset可以在一个hashes中设置多个key-value,hget只可以获取一个散列中一个key的value,hmget可以获取多个,hgetall获得hash中所有的key-value
127.0.0.1:6379> hset myhash field1 hello
(integer) 1
127.0.0.1:6379> hget myhash field1
"hello"
127.0.0.1:6379> hset myhash field2 world field3 good
(integer) 2
127.0.0.1:6379> hmget myhash field1 field2
1) "hello"
2) "world"
127.0.0.1:6379> hgetall myhash
1) "field1"
2) "hello"
3) "field2"
4) "world"
5) "field3"
6) "good"
  1. 删除hash中指定的key,对应value也就没有了hdel
127.0.0.1:6379> hgetall myhash
1) "field1"
2) "hello"
3) "field2"
4) "world"
5) "field3"
6) "good"
127.0.0.1:6379> hdel myhash field2
(integer) 1
127.0.0.1:6379> hgetall myhash
1) "field1"
2) "hello"
3) "field3"
4) "good"
127.0.0.1:6379>
  1. 查看hash中key-value的对数hlen
127.0.0.1:6379> hgetall myhash
1) "field1"
2) "hello"
3) "field3"
4) "good"
127.0.0.1:6379> hlen myhash
(integer) 2
  1. 判断hash中的key是否存在:HEXISTS存在返回1,不存在返回0
127.0.0.1:6379> hgetall myhash
1) "field1"
2) "hello"
3) "field3"
4) "good"
127.0.0.1:6379> HEXISTS myhash field1
(integer) 1
127.0.0.1:6379> HEXISTS myhash field2
(integer) 0
127.0.0.1:6379>
  1. 获取所有的keyhkeys,获取所有的valuehvals
127.0.0.1:6379> hkeys myhash
1) "field1"
2) "field3"
127.0.0.1:6379> hvals myhash
1) "hello"
2) "good"
  1. 加减操作 HINCRBY
127.0.0.1:6379> hset myhash field4 3
(integer) 1
127.0.0.1:6379> HINCRBY myhash field4 1  #加1
(integer) 4
127.0.0.1:6379> HINCRBY myhash field4 -2 #减2
(integer) 2
  1. key存在就不可以设置,不存在可以设置hsetnx返回0表示存在不能设置,1设置成功
127.0.0.1:6379> hkeys myhash
1) "field1"
2) "field3"
3) "field4"
127.0.0.1:6379> hsetnx myhash field3 hi
(integer) 0
127.0.0.1:6379> hsetnx myhash field2 hi
(integer) 1

列表(lists)

  1. List列表命令基本都是 l 开头的。
  2. 相关操作:

(a)lpush key value:将一个值或多个值插到列表头部(左)RPUSH key value:将一个值或多个值插到列表尾部(右)
LRANGE key 0 -1获取列表中的值,

127.0.0.1:6379> lpush list one
(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  # 获取具体范围的值
1) "three"
2) "two"
127.0.0.1:6379> RPUSH list right
(integer) 4
127.0.0.1:6379> LRANGE list 0 -1
1) "three"
2) "two"
3) "one"
4) "right"

(b)移除命令LPOPRPOP:

127.0.0.1:6379> LRANGE list 0 -1
1) "three"
2) "two"
3) "one"
4) "right"
127.0.0.1:6379> LPOP list  # 移除左边
"three"
127.0.0.1:6379> RPOP list # 移除右边
"right"

©获取下标的值:LINDEX key i

127.0.0.1:6379> LRANGE list 0 -1
1) "two"
2) "one"
127.0.0.1:6379> lindex list 1
"one"
127.0.0.1:6379> lindex list 0
"two"

(d)获取长度llen key

127.0.0.1:6379> LRANGE list 0 -1
1) "two"
2) "one"
127.0.0.1:6379> llen list
(integer) 2

(e)移除指定个数的value,精确匹配lrem key i value

127.0.0.1:6379> LRANGE list 0 -1
1) "three"
2) "three"
3) "two"
4) "one"
127.0.0.1:6379> lrem list 1 one
(integer) 1
127.0.0.1:6379> LRANGE list 0 -1
1) "three"
2) "three"
3) "two"
127.0.0.1:6379> lrem list 2 three
(integer) 2
127.0.0.1:6379> LRANGE list 0 -1
1) "two"

(f)截取指定的范围的valueltrim

127.0.0.1:6379> LPUSH list hello1 hello2 hello3 hello4
(integer) 4
127.0.0.1:6379> LRANGE list 0 -1
1) "hello4"
2) "hello3"
3) "hello2"
4) "hello1"
127.0.0.1:6379> ltrim list 1 2
OK
127.0.0.1:6379> LRANGE list 0 -1
1) "hello3"
2) "hello2"

(g)将最后一个元素移到别的list上RPOPLPUSH mylist newlist

127.0.0.1:6379> LRANGE mylist 0 -1
1) "hello3"
2) "hello2"
3) "hello1"
127.0.0.1:6379> RPOPLPUSH mylist newlist
"hello1"
127.0.0.1:6379> LRANGE mylist 0 -1
1) "hello3"
2) "hello2"
127.0.0.1:6379> LRANGE newlist 0 -1
1) "hello1"

(h)替换,更新操作lset key i newvalue

127.0.0.1:6379> EXISTS list  #查看list是否存在
(integer) 0                 #0不存在
127.0.0.1:6379> lset list 0 value1  #往一个不存在的list更新,报错
(error) ERR no such key
127.0.0.1:6379> lpush list hello
(integer) 1
127.0.0.1:6379> lpush list hello2
(integer) 2
127.0.0.1:6379> LRANGE list 0 -1
1) "hello2"
2) "hello"
127.0.0.1:6379> lset list 0 item  # 更新第0个
OK
127.0.0.1:6379> LRANGE list 0 -1  #查看
1) "item"
2) "hello"
127.0.0.1:6379> lset list 2 item  # 更新下标不存在的,报错越界
(error) ERR index out of range
127.0.0.1:6379>

(i)插入操作:linsert key after|before value newvalue在value后面或者前面插入一个newvalue

127.0.0.1:6379> LRANGE list 0 -1
1) "item"
2) "hello"
127.0.0.1:6379> LINSERT list after item good
(integer) 3
127.0.0.1:6379> LRANGE list 0 -1
1) "item"
2) "good"
3) "hello"
127.0.0.1:6379> LINSERT list before hello great
(integer) 4
127.0.0.1:6379> LRANGE list 0 -1
1) "item"
2) "good"
3) "great"
4) "hello"
127.0.0.1:6379>

集合(sets)

set中的值不能重复

  1. saad key valueset集合中添加值,SMEMBERS key查看所有值,SISMEMBER查看value是否存在,scard key获取set集合中的内容元素个数
127.0.0.1:6379> sadd myset "hello"
(integer) 1
127.0.0.1:6379> sadd myset "good"
(integer) 1
127.0.0.1:6379> sadd myset "great"
(integer) 1
127.0.0.1:6379> SMEMBERS myset
1) "good"
2) "great"
3) "hello"
127.0.0.1:6379> SISMEMBER myset hi
(integer) 0
127.0.0.1:6379> SISMEMBER myset hello
(integer) 1
127.0.0.1:6379> scard myset
(integer) 3
  1. 移除某个值srem key value
127.0.0.1:6379> SMEMBERS myset
1) "good"
2) "great"
3) "hello"
127.0.0.1:6379> srem myset great
(integer) 1
127.0.0.1:6379> SMEMBERS myset
1) "good"
2) "hello"
  1. set无序不重复,可以随机抽取值
127.0.0.1:6379> SRANDMEMBER myset 1   #随机抽取1个值
1) "good"
127.0.0.1:6379> SRANDMEMBER myset 1
1) "hello"
127.0.0.1:6379> SRANDMEMBER myset 2 #随机抽取2个值
1) "good"
2) "hello"
  1. 随机删除SMEMBERS key默认删除1个,也可以在后面指定删除的个数,随机
127.0.0.1:6379> SMEMBERS myset
1) "good"
2) "great"
3) "hi"
4) "hello"
127.0.0.1:6379> spop myset
"great"
127.0.0.1:6379> spop myset
"hello"
127.0.0.1:6379> SMEMBERS myset
1) "good"
2) "hi"
  1. 将集合中指定的元素移动到另一个集合中smove key1 key2 valuekey1中的value移到key2
127.0.0.1:6379> SMEMBERS myset
1) "good"
2) "great"
3) "hi"
4) "hello"
127.0.0.1:6379> SMEMBERS myset2
1) "world"
127.0.0.1:6379> smove myset myset2 hello
(integer) 1
127.0.0.1:6379> SMEMBERS myset
1) "good"
2) "great"
3) "hi"
127.0.0.1:6379> SMEMBERS myset2
1) "hello"
2) "world"

有序集合(sorted sets)

在set集合的基础上增加一个值。

  1. 增加操作
127.0.0.1:6379> zadd myset 1 one  #增加1个值
(integer) 1
127.0.0.1:6379> zadd myset 2 two 3 three  #增加多个
(integer) 2
127.0.0.1:6379> zrange myset 0 -1  #查看全部
1) "one"
2) "two"
3) "three"
  1. 排序操作
127.0.0.1:6379> zadd salary 2000 halen
(integer) 1
127.0.0.1:6379> zadd salary 3000 lily
(integer) 1
127.0.0.1:6379> zadd salary 2500 xiaoming
(integer) 1
127.0.0.1:6379> ZRANGEBYSCORE salary -inf +inf #小到大排序,范围负无穷到正无穷
1) "halen"
2) "xiaoming"
3) "lily"
127.0.0.1:6379> ZRANGEBYSCORE salary -inf +inf withscores #小到大排序带上数字,范围负无穷到正无穷
1) "halen"
2) "2000"
3) "xiaoming"
4) "2500"
5) "lily"
6) "3000"
127.0.0.1:6379> ZRANGEBYSCORE salary -inf 2500 withscores #小到大排序带上数字,范围负无穷到2500
1) "halen"
2) "2000"
3) "xiaoming"
4) "2500"
127.0.0.1:6379> ZREVRANGEBYSCORE salary +inf -inf withscores #大到小排序
1) "lily"
2) "3000"
3) "xiaoming"
4) "2500"
5) "halen"
6) "2000"
  1. 移除操作
127.0.0.1:6379> ZRANGE salary 0 -1
1) "halen"
2) "xiaoming"
3) "lily"
127.0.0.1:6379> zrem salary xiaoming
(integer) 1
127.0.0.1:6379> ZRANGE salary 0 -1
1) "halen"
2) "lily"
  1. 获取集合中元素的有效个数
127.0.0.1:6379> ZRANGE salary 0 -1
1) "halen"
2) "lily"
127.0.0.1:6379> zcard salary
(integer) 2
  1. 获取指定区间的元素个数
127.0.0.1:6379> zadd myset 1 one 2 two 3 three 4 four
(integer) 4
127.0.0.1:6379> ZRANGE myset 0 -1
1) "one"
2) "two"
3) "three"
4) "four"
127.0.0.1:6379> zcount myset 1 3
(integer) 3
127.0.0.1:6379> zcount myset 2 3
(integer) 2

【Redis】Redis的五大数据类型相关推荐

  1. Redis入门(2):五大数据类型(key,string,list,set,sortset)将其实战,配置文件详解,发布与订阅

    五大数据类型 redis常见数据类型操作命令:http://www.redis.cn/commands.html Redis键(key) 命令 描述 keys * 查看当前库所有key (匹配:key ...

  2. 【用户画像】Redis的常用五大数据类型和配置文件介绍

    文章目录 一 常用五大数据类型简介 1 Redis键(key) 2 Redis字符串(String) 3 Redis列表(List) 4 Redis集合(Set) 5 Redis哈希(Hash) 6 ...

  3. NoSQL概述-Redis安装-常用五大数据类型-概述Bitmaps,HyperLogLog,Geospatial和redis.conf 基本解析

    NoSQL 概述 NoSQL(NoSQL=Not Only SQL),意即"不仅仅是SQL",泛指 非关系型的数据库. NoSQL不依赖业务逻辑方式存储,而以简单的key-valu ...

  4. 【redis】Redis中常用的五大数据类型的介绍以及代码的实现

    一.五大数据类型的介绍 String:字符串 二进制安全的,可以包含任何数据,包括jpg图片或者序列化对象 字符串value长度不能超过512MB Hash:哈希 类似java中Map,就是一个键值对 ...

  5. (一)Redis——五大数据类型及基础知识

    一位爱好技术的橘右京的哥哥橘左京 Redis--五大数据类型及基础知识(一) Redis 1.Redis命令 1.1 常用String命令 1.2 常用List命令 1.3 常用Hash命令 1.4 ...

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

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

  7. Redis 学习笔记-NoSQL数据库 常用五大数据类型 Redis配置文件介绍 Redis的发布和订阅 Redis_事务_锁机制_秒杀 Redis应用问题解决 分布式锁

    1.NoSQL数据库 1.1 NoSQL数据库概述 NoSQL(NosQL = Not Only sQL ),意即"不仅仅是sQL",泛指非关系型的数据库.NoSQL不依赖业务逻辑 ...

  8. redis之五大数据类型

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

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

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

  10. note.. redis五大数据类型

    redis 五大数据类型使用 nosql介绍,由来 什么是nosql 阿里巴巴的架构 nosql 四大分类 redis入门 概述 redis 安装 (docker) 基础的知识 redis五大数据类型 ...

最新文章

  1. 野指针与内存泄漏那些事
  2. 感知机模拟或门的实现:权重和阈值的设置
  3. AngularJS表单验证
  4. 黄聪:如何用代码设置控制自己网站的网页在360浏览器打开时强制优先使用极速模式,而非兼容模式...
  5. 第二篇:阿里数据中台之OneData体系1
  6. 后台管理中心跳转问题解决
  7. 前端学习(1855)vue之电商管理系统电商系统之安装mysql出现VCRUNTIME140_1.dll
  8. Mysql数据库,项目需求需要数据还原的数据表结构构思方案
  9. 操作系统(李治军) L10用户级线程
  10. Strut2开发经验总结
  11. idea docker 一键部署实战
  12. web前端开发:JavaScript 基本语法,
  13. 第 14 章 程序员常用 10 种算法
  14. DVB vs. SVB+Shader Instancing
  15. 谷歌翻译退出,idea谷歌翻译无法使用(解决)
  16. 电脑插入头戴式耳机后声音依然外放
  17. MuseScore入门教程(一、下载,并新建乐谱)
  18. 7、【STM32】独立看门狗和窗口看门狗(IWDG、WWDG)实验
  19. 锐龙 3 7320U参数 r3 7320U性能怎么样 r37320U相当于什么水平
  20. 破解智慧零售密码 苏宁易购818引爆全民消费狂欢

热门文章

  1. 车辆仪表数显器E-mark认证流程是怎样的?
  2. 第44章 MPU6050传感器—姿态检测—零死角玩转STM32-F429系列
  3. 五一培训 清北学堂 DAY3
  4. OB0201 obsidian dataview插件使用
  5. linux桌面支持hdpi,用于HiDPI显示器的最佳Linux桌面环境 | MOS86
  6. x265笔记_1_下载调试
  7. linux佳能打印机服务,linux桌面打印机配置指南
  8. .net学习笔记——学生信息管理系统(一、在SQL server中新建学生信息库)
  9. 19 | 三方协议怎么签?
  10. html百度天气查询api,百度提供天气预报查询接口API