Redis 常用命令总结,java 项目实例教程详细
"lisi"
lpop:移除最左(头部)的一个元素
rpop: 移除最右边(尾部)的一个元素
127.0.0.1:6379> lpush mylist hello1 # 通过 lpush 命令为 key 为 mylist 的增加三个元素
(integer) 1
127.0.0.1:6379> lpush mylist hello2
(integer) 2
127.0.0.1:6379> lpush mylist hello3
(integer) 3
127.0.0.1:6379> lrange mylist 0 -1 #通过 lrange 进行查看
"hello3"
"hello2"
"hello1"
127.0.0.1:6379> lpop mylist # 移除 mylist 中第一个元素
(头部第一个)
"hello3"
127.0.0.1:6379> rpop mylist # 移除 mylist 尾部第一个元素
"hello1"
127.0.0.1:6379> lrange mylist 0 -1 # 再次通过 lrange 进行查看发现只剩一个
"hello2"
lindex: 通过指定的下标来获取元素,下标从 0 开始
127.0.0.1:6379> lrange mylist 0 -1 # 对 mylist 中元素进行查看
"hello1"
"hello2"
"hello3"
127.0.0.1:6379> lindex mylist 2 #获取下标为 2 的 list 中的元素
"hello3"
llen : 返回 list 列表的长度
lrem: 移除 list 列表中的指定元素,可以一次移除多个
ltrim: 相当于剪辑,获取指定范围的 list 的元素,其他元素将被移除
127.0.0.1:6379> lrange mylist 0 -1 #查看 mylist 中的元素
"hello4"
"hello3"
"hello2"
"hello1"
127.0.0.1:6379> llen mylist # 获取长度
(integer) 4
127.0.0.1:6379> lpush mylist hello1 # 为了测试 lrem 可以移除多个增加一个 hello1,list 是有序的,所以元素可以重复
(integer) 5
127.0.0.1:6379> lrange mylist 0 -1
"hello1"
"hello4"
"hello3"
"hello2"
"hello1"
127.0.0.1:6379> lrem mylist 1 hello4 #移除 mylist 中值为 hello4 的元素,然后移除 1 个
(integer) 1
127.0.0.1:6379> lrange mylist 0 -1
"hello1"
"hello3"
"hello2"
"hello1"
127.0.0.1:6379> lrem mylist 2 hello1 #移除 mylist 中值为 hello1 的元素,然后移除 2 个
(integer) 2
127.0.0.1:6379> lrange mylist 0 -1
"hello3"
"hello2"
127.0.0.1:6379> rpush mylist hello1 # 为测试方便增加一个元素
(integer) 3
127.0.0.1:6379> lrange mylist 0 -1
"hello3"
"hello2"
"hello1"
127.0.0.1:6379> ltrim mylist 0 1 #对 mylist 中的元素进行截取,截取第 0~1 个
OK
127.0.0.1:6379> lrange mylist 0 -1
"hello3"
"hello2"
rpoplpush : 返回并移除 list 中的最后一个元素,并把该元素加入到一个新的 list 中
lset : 通过指定的下标为 list 设置一个值,类似于 update,如果下标再 list 中不存在,或者 list 不存在都会报错
linsert : 给 list 再指定元素前或者后来插入一个元素
127.0.0.1:6379> lpush mylist hello1 hello2 hello3 #创建 mylist 并新增三个元素
(integer) 3
127.0.0.1:6379> lrange mylist 0 -1
"hello3"
"hello2"
"hello1"
127.0.0.1:6379> rpoplpush mylist mylist1 # 将 mylist 中最后一个元素弹出,并增加到 mylist1 中,如果 mylist1 不存在则会创建
"hello1"
127.0.0.1:6379> lrange mylist 0 -1
"hello3"
"hello2"
127.0.0.1:6379> keys *
"mylist"
"mylist1"
127.0.0.1:6379> lrange mylist1 0 -1
"hello1"
127.0.0.1:6379> lset mylist 0 xiec # 将下标为 0 的元素更新为 xiec
OK
127.0.0.1:6379> lrange mylist 0 -1
"xiec"
"hello2"
127.0.0.1:6379> linsert mylist before xiec lisi # 再 mylist 中再元素值为 xiec 的前面增加一个 lisi 元素
(integer) 3
127.0.0.1:6379> lrange mylist 0 -1
"lisi"
"xiec"
"hello2"
Set 集合:set 和 list 最主要的区别和 java 集合类似,里面的元素无序,并且不可以重复
sadd: 用于创建一个 set 类型的 key-value 类型的键值对,并往里面增加一个或多个值
smembers : 查看一个 set 集合中的所有元素
sismember : 判断一个元素是否再 set 集合中,存在返回 1,不存在返回 0
scard : 获取 set 集合的长度
127.0.0.1:6379> sadd myset hello word xiec
(integer) 3
127.0.0.1:6379> smembers myset
"xiec"
"word"
"hello"
127.0.0.1:6379> sismember myset xiec
(integer) 1
127.0.0.1:6379> scard myset
(integer) 3
srem: 移除 set 集合中一个具体的元素
srandmember : 从 set 集合中随机取出一个或多个值
spop : 随机从 set 集合中移除一个元素
smove : 从一个 set 集合中移动一个元素到另一个 set 集合中,如果另一个 set 集合不存在则会创建
127.0.0.1:6379> flushdb #为演示先清空数据库
OK
127.0.0.1:6379> sadd myset hello word xiec happy
(integer) 4
127.0.0.1:6379> srem myset hello # 从 myset 中移除值为 hello 的元素
(integer) 1
127.0.0.1:6379> smembers myset #查看 myset 中的元素
"xiec"
"word"
"happy"
127.0.0.1:6379> srandmember myset # 从 myset 集合中随机取出一个值,并不会从 set 集合中删除
"word"
127.0.0.1:6379> smembers myset
"xiec"
"word"
"happy"
127.0.0.1:6379> spop myset # 从 set 集合中随机选取一个元素并删除
"xiec"
127.0.0.1:6379> smembers myset
"word"
"happy"
127.0.0.1:6379> smove myset myset1 word # 将 myset 集合中的 world 元素移动到 myset1 中 myset1 不存在则会创建
(integer) 1
127.0.0.1:6379> keys *
"myset1"
"myset"
127.0.0.1:6379> smembers myset1
"word"
sdiff : 计算两个集合的差集
sinter : 计算两个集合的交集
sunion : 计算两个集合的并集
127.0.0.1:6379> flushdb
OK
127.0.0.1:6379> sadd set1 a b c d
(integer) 4
127.0.0.1:6379> sadd set2 c d e f
(integer) 4
127.0.0.1:6379> sdiff set1 set2 # 差集,set1 减去 set2 剩下的就是 a,b
"b"
"a"
127.0.0.1:6379> sinter set1 set2 #交集,很容易理解,就是两个 set 集合的共同元素
"d"
"c"
127.0.0.1:6379> sunion set1 set2 #并集,就是把两个集合的所有元素
"f"
"b"
"e"
"a"
"d"
"c"
Hash:hash 和 String 的命令很类似,可以联合记忆,hash 的 value 是一个 map 集合。
====================================================================================================================
hset :设置一个 hash 类型的 key value
hget : 从 hash 的 map 中取出具体 key 的值
hmset : 和 String 类型的 mset 类似,这个可以批量设置 map 中的键值对
hmget : 同时获取多个 map 中多个 key 的 value
127.0.0.1:6379> hset myhash name xiec
(integer) 1
127.0.0.1:6379> hget myhash name
"xiec"
127.0.0.1:6379> hmset myhash age 23 sex nan
OK
127.0.0.1:6379> hmget myhash name age
"xiec"
"23"
hgetall : 获取一个 hash 中的全部元素,以 key-value 形式展示
hdel : 删除 hash 中的一个 key,删除时 value 也会同步删除
hlen : 获取 hash 中有多少个 key
127.0.0.1:6379> hset myhash name xiec
(integer) 1
127.0.0.1:6379> hget myhash name
"xiec"
127.0.0.1:6379> hmset myhash age 23 sex nan
OK
127.0.0.1:6379> hmget myhash name age
"xiec"
"23"
127.0.0.1:6379> hgetall myhash
"name"
"xiec"
"age"
"23"
"sex"
"nan"
127.0.0.1:6379> hdel myhash sex
(integer) 1
127.0.0.1:6379> hgetall myhash
"name"
"xiec"
"age"
"23"
127.0.0.1:6379> hlen myhash
(integer) 2
hexists : 判断 hash 中是否存在指定的 key,存在返回 1,不存在返回 0
hkeys : 获取 hash 中所有的 key(只有 key)
hvals : 获取 hash 中多有的 value(只获得所有的 value)
127.0.0.1:6379> hgetall myhash
"name"
"xiec"
"age"
"23"
127.0.0.1:6379> hexists myhash name
(integer) 1
127.0.0.1:6379> hkeys myhash
"name"
"age"
127.0.0.1:6379> hvals myhash
"xiec"
"23"
hincrby : 为 hash 中的某个 key 的 value 指定增加多少
hsetnx : 只有当 hash 中的那个 key 不存在时才会设置成功
127.0.0.1:6379> hgetall myhash
"name"
"xiec"
"age"
"23"
127.0.0.1:6379> hincrby myhash age 2
(integer) 25
127.0.0.1:6379> hsetnx myhash sex nan
(integer) 1
127.0.0.1:6379> hsetnx myhash sex nv
(integer) 0
Zset 集合:这个集合类型和 Set 集合很像,命令也大多类似,相比而言 Zset 多了 score 用来排序得字段
zadd :可以设置一个 zset 类型得键值对,可以一次为 zset 集合添加一个或多个值
zrange:用于查看 set 集合中得元素
zrangebyscore: 通过 score 字段排序 -inf 表示无穷小,+inf 表示无穷大
127.0.0.1:6379> zadd myset 10 xiec 20 zhangs 30 lisi # 其中 10,20,30 表示 score 字段
(integer) 3
127.0.0.1:6379> zrange myset 0 -1 # 查看 set 集合中全部元素
"xiec"
"zhangs"
"lisi"
127.0.0.1:6379> zrangebyscore myset -inf +inf # 通过 score 字段从小到大排序,不展示 score
"xiec"
"zhangs"
"lisi"
127.0.0.1:6379> zrangebyscore myset -inf +inf withscores # 加上 withscores 对 score 进行展示
评论