Redis
文章目录
- 基本命令
- 判断是否存在key(EXISTS)
- 查看某个key的类型(type)
- 当前数据库所有的 key(keys *)
- 设置过期时间(EXPIRE)
- 移除key
- 基本类型
- String(字符串)
- 基础
- 设置自增 自减
- 处理字符串
- 赋值
- getset
- List(列表)
- 添加 (LPUSH)
- 移除(LPOP,Lrem)
- 获取(lindex)
- 截取(ltrim)
- 移除并添加( RPOPLPUSH 组合命令)
- 替换list中指定下标的值(lset)
- 插入列表中每个元素(LINSERT)
- Set(集合)
- 添加值(sadd)
- 获取全部Set集合中全部的值(SMEMBERS)
- 判断set集合是否包含某些元素(SISMEMBER)
- 随机抽取(SRANDMEMBER)
- 删除
- 随机删除(SPOP)
- 指定删除(SREM)
- 将某个元素从一个集合移动到另一个集合 (SMOVE)
- 两个set集合的交(SINTER),差(SDIFF) ,并集(SUNION)
- Hash
- Zset
基本命令
判断是否存在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
学的不是技术 更是梦想