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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值