Redis基本入门

本文全面介绍了Redis的基本命令,包括判断Key的存在、类型查看、过期时间设置等基础操作,以及String、List、Set、Hash和Zset等数据类型的高级应用。通过实例展示了如何使用Redis进行数据存储、处理和检索。

Redis

基本命令

判断是否存在key(EXISTS)
127.0.0.1:6379> EXISTS list
(integer) 0
查看某个key的类型(type)
127.0.0.1:6379> set name jhs
OK
127.0.0.1:6379> type name	#查看 key的类型
string 
当前数据库所有的 key(keys *)
127.0.0.1:6379> keys *		# 当前数据库所有的 key
1) "key:__rand_int__"
2) "myset:__rand_int__"
3) "mylist"
4) "counter:__rand_int__"
设置过期时间(EXPIRE)
127.0.0.1:6379> set name jhs
OK
127.0.0.1:6379> get name
"jhs"
127.0.0.1:6379> EXPIRE name 60 # 设置过期时间 ,单位秒 name在60秒后过期
(integer) 1
127.0.0.1:6379> ttl name	# 查看 key=name 还剩多长时间过期
(integer) 56
移除key
127.0.0.1:6379> move name 1 # 移除当前的key(并不常用)
(integer) 1

基本类型

String(字符串)


基础
127.0.0.1:6379> set key1 v1
OK
127.0.0.1:6379> keys *
1) "key:__rand_int__"
2) "key1"
3) "myset:__rand_int__"
4) "mylist"
5) "counter:__rand_int__"
127.0.0.1:6379> EXISTS key1 # 判断某个key 是否存在 
(integer) 1
127.0.0.1:6379> APPEND key1 "hello" # 追加 字符串 将hello 添加到 key1中 如果不存在key则创建key
(integer) 7
127.0.0.1:6379> get key1
"v1hello"
127.0.0.1:6379> STRLEN key1	#获取字符串的长度
(integer) 7
设置自增 自减
#	设置自增 自减	#
127.0.0.1:6379> set count 0
OK
127.0.0.1:6379> get count
"0"
127.0.0.1:6379> incr count  # 自增 加1
(integer) 1
127.0.0.1:6379> type count
string
127.0.0.1:6379> incr count
(integer) 2
127.0.0.1:6379> get count
"2"
127.0.0.1:6379> decr count # 自减 减一
(integer) 1
127.0.0.1:6379> get count
"1"
#	自增 自减的 步长	#
127.0.0.1:6379> INCRBy count 2 # 设置步长 +2 步长为2
(integer) 3
127.0.0.1:6379> incrby count 2
(integer) 5
127.0.0.1:6379> decrby count 2	#设置步长 -2
(integer) 3
127.0.0.1:6379> DECRBY count 3
(integer) 0

#	清空当前数据库	#
127.0.0.1:6379> FLUSHdb #清空当前数据库
OK
127.0.0.1:6379> keys *
(empty list or set)
处理字符串
#	截取符串	#
127.0.0.1:6379> set name "hello,jhs"
OK
127.0.0.1:6379> get name 
"hello,jhs"
127.0.0.1:6379> GETRANGE name 0 4 # 获取 0,4
"hello"
127.0.0.1:6379> GETRANGE name 0 -1 	#获取 全部
"hello,jhs"

#	替换	#
127.0.0.1:6379> get name
"hello,jhs"
127.0.0.1:6379> SETRANGE name 1 xx  # 从下标 1 开始替换 
(integer) 9
127.0.0.1:6379> get name
"hxxlo,jhs"
127.0.0.1:6379> SETRANGE name 1 e
(integer) 9
127.0.0.1:6379> get name
"hexlo,jhs"
赋值
#赋值 操作
127.0.0.1:6379> setex key1 30 "hello"	# 设置过期时间 30秒
OK
127.0.0.1:6379> ttl key1	#查看剩余时间
(integer) 15
127.0.0.1:6379> SETNX mykey "redis"	# 判断是否有	mykey 没有 则创建&赋值 
(integer) 1 
127.0.0.1:6379> SETNX mykey "mongodb" # 判断是否有	mykey 有 不会替换原来的值
(integer) 0
127.0.0.1:6379> get mykey
"redis" 
127.0.0.1:6379> set mykey java # set key 有这个key就替换掉里面的内容 没有就创建 
OK
127.0.0.1:6379> get mykey
"java"
#	批量赋值,获取值	#
mset
mget
127.0.0.1:6379> mset k1 v1 k2 v2 k3 v3 # 批量赋值
OK
127.0.0.1:6379> keys *
1) "k2"
2) "name"
3) "mykey"
4) "k1"
5) "k3"
127.0.0.1:6379> mget k1 k2 k3	#批量获取值
1) "v1"
2) "v2"
3) "v3"
127.0.0.1:6379> msetnx k1 v2 k4 v4 # 原子性的操作 要么都成功 要么都失败
(integer) 0
getset
#	getset	#
127.0.0.1:6379> getset db redis #
(nil)
127.0.0.1:6379> getset db redis
"redis"
127.0.0.1:6379> getset db  mogodb
"redis"
127.0.0.1:6379> getset db  mogodb
"mogodb"
127.0.0.1:6379> getset db  jhs
"mogodb"
127.0.0.1:6379> getset db  hy
"jhs"

List(列表)


  • 在redis里面,我们可以将list完成.栈,队列,阻塞队列!
  • redis 命令不区分大小写
添加 (LPUSH)
127.0.0.1:6379> LPUSH list 1 #	在左边(上面)添加 
(integer) 1
127.0.0.1:6379> LPUSH list 2
(integer) 2
127.0.0.1:6379> LPUSH list 3
(integer) 3
127.0.0.1:6379> LRange list 0 -1	#	获取全部的数据
1) "3"
2) "2"
3) "1"
127.0.0.1:6379> LRange list 0 1		#	获取 一定范围的数据
1) "3"
2) "2"
127.0.0.1:6379> RPUSH list 4	#	在右边(下边)添加 元素
(integer) 4
127.0.0.1:6379> LRange list 0 -1
1) "3"
2) "2"
3) "1"
4) "4"

移除(LPOP,Lrem)
127.0.0.1:6379> lRange list 0 -1 # 获取全部数据
1) "3"
2) "2"
3) "1"
4) "4"
127.0.0.1:6379> LPOP list	#	移除左边(上面)第一个元素 
"3"
127.0.0.1:6379> lRange list 0 -1
1) "2"
2) "1"
3) "4"
127.0.0.1:6379> RPOP list # 移除右面(下面)第一个元素 
"4" 
127.0.0.1:6379> lRange list 0 -1
1) "2"
2) "1" 

#	移除指定的值	#
127.0.0.1:6379> LRANGE nameList 0 -1 
1) "lcj"
2) "jxl"
3) "hy"
4) "jhs"
127.0.0.1:6379> LPUSH nameList jxl #List 可以添加 重复值
(integer) 5
127.0.0.1:6379> LRANGE nameList 0 -1
1) "jxl"
2) "lcj"
3) "jxl"
4) "hy"
5) "jhs"
127.0.0.1:6379> lrem nameList 1 jxl # 移除 指定 的 值 
(integer) 1
127.0.0.1:6379> LRANGE nameList 0 -1
1) "lcj"
2) "jxl"
3) "hy"
4) "jhs"
127.0.0.1:6379> LPUSH nameList jxl
(integer) 5
127.0.0.1:6379> LPUSH nameList jxl
(integer) 6
127.0.0.1:6379> LRANGE nameList 0 -1
1) "jxl"
2) "jxl"
3) "lcj"
4) "jxl"
5) "hy"
6) "jhs"
127.0.0.1:6379> lrem nameList 3 jxl # 移除 指定 的 值 
(integer) 3
127.0.0.1:6379> LRANGE nameList 0 -1
1) "lcj"
2) "hy"
3) "jhs"


获取(lindex)
127.0.0.1:6379> lRange list 0 -1
1) "2"
2) "1"
127.0.0.1:6379> lindex list 0 # 获取 List 中 具体的某个值
"2"
127.0.0.1:6379> LLEN list # 返回 List 的长度
(integer) 2


截取(ltrim)
127.0.0.1:6379> LRANGE number 0 -1
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
6) "6"
127.0.0.1:6379> ltrim number 1 2
OK
127.0.0.1:6379> LRANGE number 0 -1
1) "2"
2) "3"

移除并添加( RPOPLPUSH 组合命令)

移除最后一个添加到另一个list里面

127.0.0.1:6379> flushdb
OK
127.0.0.1:6379> rpush number 6
(integer) 1
127.0.0.1:6379> rpush number 5
(integer) 2
127.0.0.1:6379> rpush number 4
(integer) 3
127.0.0.1:6379> RPOPLPUSH number count
"4"
127.0.0.1:6379> keys *
1) "count"
2) "number"
127.0.0.1:6379> EXISTS list
(integer) 0


替换list中指定下标的值(lset)
  • list 要存在
  • list下标存在
127.0.0.1:6379> keys *
1) "count"
2) "number"
127.0.0.1:6379> LRANGE number 0 -0
(error) ERR value is not an integer or out of range
127.0.0.1:6379> LRANGE number 0 -1
1) "6"
2) "5"
127.0.0.1:6379> lset number 0 # jhs 将 number 中下标为 0 的元素 提换 成 jhs
OK
127.0.0.1:6379> LRANGE number 0 -1
1) "jhs"
2) "5"
插入列表中每个元素(LINSERT)
127.0.0.1:6379> flushdb
OK
127.0.0.1:6379> keys *
(empty list or set)
127.0.0.1:6379> Rpush mylist "hello"
(integer) 1
127.0.0.1:6379> Rpush mylist "hou"
(integer) 2
127.0.0.1:6379> keys *
1) "mylist"
127.0.0.1:6379> LRANGE mylist 0 -1
1) "hello"
2) "hou"
127.0.0.1:6379> LINSERT mylist before hou jiang # 插入到mylist 列表中 hou 的前面 添加 jiang
(integer) 3
127.0.0.1:6379> LRANGE mylist 0 -1
1) "hello"
2) "jiang"
3) "hou"
127.0.0.1:6379> LINSERT mylist after hou sen # 插入到mylist 列表中 hou 的后面 添加 sen
(integer) 4
127.0.0.1:6379> LRANGE mylist 0 -1
1) "hello"
2) "jiang"
3) "hou"
4) "sen"
 

Set(集合)


  • 集合里面的值不能重复
添加值(sadd)
获取全部Set集合中全部的值(SMEMBERS)
判断set集合是否包含某些元素(SISMEMBER)
127.0.0.1:6379> flushdb
OK
127.0.0.1:6379> 
127.0.0.1:6379> sadd myset hello
(integer) 1
127.0.0.1:6379> sadd myset jhs
(integer) 1
127.0.0.1:6379> SMEMBERS myset
1) "hello"
2) "jhs"
127.0.0.1:6379> SISMEMBER myset jhs
(integer) 1
127.0.0.1:6379> SISMEMBER myset jxl
(integer) 0
127.0.0.1:6379> SCARD myset
(integer) 2

随机抽取(SRANDMEMBER)
127.0.0.1:6379> SRANDMEMBER myset
"jhs"
127.0.0.1:6379> SRANDMEMBER myset
"hy"
127.0.0.1:6379> SRANDMEMBER myset
"jhs"
127.0.0.1:6379> SRANDMEMBER myset 2 #随机抽取指定个数
1) "jhs"
2) "hy"


删除
随机删除(SPOP)
127.0.0.1:6379> SMEMBERS myset
1) "5"
2) "3"
3) "1"
4) "jhs"
5) "4"
6) "6"
7) "hy"
127.0.0.1:6379> SPOP myset # 默认删除一个
"hy"
127.0.0.1:6379> SPOP myset 2 # 随机删除两个
1) "6"
2) "3"
指定删除(SREM)
127.0.0.1:6379> SMEMBERS myset
1) "hello"
2) "jhs"
3) "hy"
127.0.0.1:6379> SREM myset hello # 移除set集合中的某个值(SREM)
(integer) 1
127.0.0.1:6379> SMEMBERS myset
1) "jhs"
2) "hy"
将某个元素从一个集合移动到另一个集合 (SMOVE)

127.0.0.1:6379> SMEMBERS myset
1) "5"
2) "1"
3) "jhs"
4) "4"
127.0.0.1:6379> SMOVE myset youset jhs
(integer) 1
127.0.0.1:6379> SMEMBERS myset
1) "5"
2) "1"
3) "4"
127.0.0.1:6379> SMEMBERS youset
1) "jhs"
127.0.0.1:6379> 

两个set集合的交(SINTER),差(SDIFF) ,并集(SUNION)
127.0.0.1:6379> SMEMBERS key1
1) "a"
2) "c"
3) "b"
127.0.0.1:6379> SMEMBERS key2
1) "d"
2) "e"
3) "c"
127.0.0.1:6379> SDIFF key2 key1
1) "d"
2) "e"
127.0.0.1:6379> SDIFF key1 key2
1) "a"
2) "b"
127.0.0.1:6379> SINTER key1 key2
1) "c"
127.0.0.1:6379> SUNION key1 key2
1) "a"
2) "b"
3) "c"
4) "d"
5) "e"

Hash


Zset

学的不是技术 更是梦想

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值