Redis常用数据类型和操作

string类型及操作

set

设置 key 对应的值为 string 类型的 value
127.0.0.1:6379> set name zhangsan
OK

setnx

设置 key 对应的值为 string 类型的 value。如果 key 已经存在,返回 0,nx 是 not exist 的意思

127.0.0.1:6379> get name
"zhangsan"
127.0.0.1:6379> setnx name zhangsan_new
(integer) 0
127.0.0.1:6379> get name
"zhangsan"

setex

设置 key 对应的值为 string 类型的 value,并指定此键值对应的有效期。

127.0.0.1:6379> setex sex 10 man
OK
127.0.0.1:6379> get sex
(nil)

sex为键,10为存在10秒,man为值

setrange

设置键值,把名字wangwu的名字替换成liu

127.0.0.1:6379> get name
"wangsan"
127.0.0.1:6379> setrange name 4 liu
(integer) 7
127.0.0.1:6379> get name
"wangliu"

4是偏移量
 mset
一次设置多个 key 的值,成功返回 ok 表示所有的值都设置了,失败返回 0 表示没有任何值
被设置
127.0.0.1:6379> mset name1 zhang name2 li
OK
127.0.0.1:6379> get name1
"zhang"
127.0.0.1:6379> get name2
"li"
get
获取 key 对应的 string 值,如果 key 不存在返回 nil。
127.0.0.1:6379> get name
"wangliu"
获取不存在的键,返回nil,失败
127.0.0.1:6379> get name9
(nil)
 getrange
获取指定 key 的 value 值的子字符串。
127.0.0.1:6379> get name
"wangliu"
127.0.0.1:6379> getrange name 4 7
"liu"
获取指定范围内的字符
mget
一次获取多个 key 的值,如果对应 key 不存在,则对应返回 nil。
127.0.0.1:6379> mget name1 name2
1) "zhang"
2) "li"
 incr
对 key 的值做加加操作,并返回新的值。
127.0.0.1:6379> set count 0
OK
127.0.0.1:6379> incr count
(integer) 1
127.0.0.1:6379> incr count
(integer) 2
127.0.0.1:6379> get count
"2"
incrby
同 incr 类似,加指定值 ,key 不存在时候会设置 key,并认为原来的 value 是 0
127.0.0.1:6379> get count
"2"
127.0.0.1:6379> incrby count 4
(integer) 6
127.0.0.1:6379> get count
"6"
decr
对 key 的值做的是减减操作,decr 一个不存在 key,则设置 key 为-1
127.0.0.1:6379> get count
"6"
127.0.0.1:6379> decr count
(integer) 5
127.0.0.1:6379> get count
"5"
decrby
同 decr,减指定值。
127.0.0.1:6379> get count
"5"
127.0.0.1:6379> decrby count 3
(integer) 2
127.0.0.1:6379> get count
"2"
append
给指定 key 的字符串值追加 value,返回新字符串值的长度(如果键不存在,会创建键,并把值添加到空串后)。
127.0.0.1:6379> get name
"zhangsan"
127.0.0.1:6379> append name @qq.com
(integer) 15
127.0.0.1:6379> get name
"zhangsan@qq.com"
strlen
取指定 key 的 value 值的长度。
127.0.0.1:6379> get name
"zhangsan@qq.com"
127.0.0.1:6379> strlen name
(integer) 15
hashes 类型及操作
Redis hash 是一个 string 类型的 field 和 value 的映射表
 hset
设置 hash field 为指定值,如果 key 不存在,则先创
[root@n1 ~]# redis-cli
127.0.0.1:6379> hset myhash field1 hello
(integer) 1
hget
获取指定的 hash field
127.0.0.1:6379> hget myhash field1
"hello"
 hlen
返回指定 hash 的 field 数量。
127.0.0.1:6379> hlen myhash
(integer) 1
hkeys
返回 hash 的所有 field。
127.0.0.1:6379> hkeys myhash
1) "field1"
127.0.0.1:6379> hvals myhash
1) "hello"
hgetall
获取某个 hash 中全部的 filed 及 value。
127.0.0.1:6379> hgetall myhash
1) "field1"
2) "hello"

HSACN
遍历包含关键字的字段
127.0.0.1:6379> HGETALL fandian
1) "adderss"
2) "nanyang"
3) "dianhua"
4) "123"
5) "dianhua1"
6) "234"
7) "dianhua2"
8) "342"
127.0.0.1:6379> HSCAN fandian 0 MATCH "*hua*"
1) "0"
2) 1) "dianhua"
   2) "123"
   3) "dianhua1"
   4) "234"
   5) "dianhua2"
   6) "342"

OBJECT
查看与键相关联的redis值对象的内部编码方式
127.0.0.1:6379> set mykey 123
OK
127.0.0.1:6379> OBJECT ENCODING mykey
"int"
127.0.0.1:6379> set mykey "abc"
OK
127.0.0.1:6379> OBJECT ENCODING mykey
"embstr"
其它跟set用法差不多,在此不再演示
 hmget
hsetnx
 hmset
hincrby
hexists
 hdel

list类型及操作

list 是一个链表结构,主要功能是 push、pop、获取一个范围的所有值等等,操作中 key 理解为链表的名字
lpush
在 key 对应 list 的头部添加字符串元素
127.0.0.1:6379> lpush mylist1 "world"
(integer) 1
127.0.0.1:6379> lpush mylist1 "hello"
(integer) 2
127.0.0.1:6379> lrange mylist1 0 1
1) "hello"
2) "world"
rpush
在 key 对应 list 的尾部添加字符串元素
127.0.0.1:6379> rpush mylist2 "hello" "world"
(integer) 2
127.0.0.1:6379> lrange mylist2 0 1
1) "hello"
2) "world"
linsert
在 key 对应 list 的特定位置之前或之后添加字符串元素
127.0.0.1:6379> lrange mylist2 0 1
1) "hello"
2) "world"
127.0.0.1:6379> linsert mylist2 before "hello" "you"
(integer) 3
127.0.0.1:6379> lrange mylist2 0 3
1) "you"
2) "hello"
3) "world"
 lset
设置 list 中指定下标的元素值(下标从 0 开始)
127.0.0.1:6379> lrange mylist2 0 3
1) "you"
2) "hello"
3) "world"
127.0.0.1:6379> lset mylist2 0 "me"
OK
127.0.0.1:6379> lrange mylist2 0 3
1) "me"
2) "hello"
3) "world"
lrem
从 key 对应 list 中删除 count 个和 value 相同的元素。
127.0.0.1:6379> rpush mylist4 "hello" "world" "hello" "hello"
(integer) 4
127.0.0.1:6379> lrem mylist4 3 "hello"
(integer) 3
127.0.0.1:6379> llen mylist4
(integer) 1
127.0.0.1:6379> lrange mylist4 0 1
1) "world"
当count等于0时,指定的value全部删除
 ltrim
保留指定 key 的值范围内的数据
127.0.0.1:6379> rpush mylist6 "1" "2" "3" "4"
(integer) 4
127.0.0.1:6379> ltrim mylist6 1 3
OK
127.0.0.1:6379> lrange mylist6 0 3
1) "2"
2) "3"
3) "4"
lpop
从 list 的头部删除元素,并返回删除元素
127.0.0.1:6379> lrange mylist6 0 3
1) "2"
2) "3"
3) "4"
127.0.0.1:6379> lpop mylist6
"2"
 rpop
从 list 的尾部删除元素,并返回删除元素
 rpoplpush
从第一个 list 的尾部移除元素并添加到第二个 list 的头部,最后返回被移除的元素值,整个操
作是原子的.如果第一个 list 是空或者不存在返回 nil
127.0.0.1:6379> lrange mylist3 0 -1
1) "hello"
2) "world"
3) "hello"
4) "hello"
127.0.0.1:6379> lrange mylist4 0 -1
1) "world"
127.0.0.1:6379> rpoplpush mylist3 mylist4
"hello"
127.0.0.1:6379> lrange mylist4 0 -1
1) "hello"
2) "world"
lindex
返回名称为 key 的 list 中 index 位置的元素
127.0.0.1:6379> lrange mylist4 0 -1
1) "hello"
2) "world"
127.0.0.1:6379> lindex mylist4 0
"hello"

set类型及操作

set 是集合,和我们数学中的集合概念相似,对集合的操作有添加删除元素,有对多个集合求交并差等操作,操作中 key 理解为集合的名字。
sadd
向名称为 key 的 set 中添加元素
127.0.0.1:6379> sadd myset "hello" "world"
(integer) 2
127.0.0.1:6379> sadd myset "world"
(integer) 0
但三个元素没有添加成功,是因为和第二个元素相同
srem
删除名称为 key 的 set 中的元素 member
127.0.0.1:6379> srem myset "hello"
(integer) 1
127.0.0.1:6379> smembers myset
1) "world"
 spop
随机返回并删除名称为 key 的 set 中一个元素
sdiff
返回所有给定 key 与第一个 key 的差集
127.0.0.1:6379> smembers myset1
1) "1"
2) "2"
127.0.0.1:6379> smembers myset2
1) "2"
2) "3"
127.0.0.1:6379> sdiff myset1 myset2
1) "1"
myset1中与myset2中不同的元素只有1,而不是1,3,3是myset2的元素
sdiffstore
返回所有给定 key 与第一个 key 的差集,并将结果存为另一个 key
sinter
返回所有给定 key 的交集
127.0.0.1:6379> smembers myset1
1) "1"
2) "2"
127.0.0.1:6379> smembers myset2
1) "2"
2) "3"
127.0.0.1:6379> sinter myset1 myset2
1) "2"
sinterstore
返回所有给定 key 的交集,并将结果存为另一个 key
sunion
返回所有给定 key 的并集
127.0.0.1:6379> smembers myset1
1) "1"
2) "2"
127.0.0.1:6379> smembers myset2
1) "2"
2) "3"
127.0.0.1:6379> sunion myset1 myset2
1) "1"
2) "2"
3) "3"
 sunionstore
返回所有给定 key 的并集,并将结果存为另一个 key
smove
从第一个 key 对应的 set 中移除 member 并添加到第二个对应 set 中
127.0.0.1:6379> smembers myset2
1) "2"
2) "3"
127.0.0.1:6379> smove myset2 myset3 2
(integer) 1
127.0.0.1:6379> smembers myset3
1) "2"
scard
返回名称为 key 的 set 的元素个数
127.0.0.1:6379> smembers myset3
1) "2"
127.0.0.1:6379> scard myset3
(integer) 1
sismember
测试 member 是否是名称为 key 的 set 的元素
127.0.0.1:6379> smembers myset3
1) "2"
127.0.0.1:6379> sismember myset3 "2"
(integer) 1
127.0.0.1:6379> sismember myset3 "3"
(integer) 0

sorted set 类型及操作

sorted set 是 set 的一个升级版本,它在 set 的基础上增加了一个顺序属性,这一属性在添加修改元素的时候可以指定,每次指定后,zset 会自动重新按新的值调整顺序。
zadd
向名称为 key 的 zset 中添加元素 member,score 用于排序。
127.0.0.1:6379>  zadd myzset 1 "one"
(integer) 1
127.0.0.1:6379> zadd myzset 2 "two"
(integer) 1
127.0.0.1:6379> zrange myzset 0 -1 withscores
1) "one"
2) "1"
3) "two"
4) "2"
zrem
删除名称为 key 的 zset 中的元素 member
127.0.0.1:6379> zrange myzset 0 -1 withscores
1) "one"
2) "1"
3) "two"
4) "2"
127.0.0.1:6379> zrem myzset two
(integer) 1
127.0.0.1:6379> zrange myzset 0 -1 withscores
1) "one"
2) "1"
zincrby
如果在名称为 key 的 zset 中已经存在元素 member,则该元素的 score 增加 increment;否则
向集合中添加该元素,其 score 的值为 increment
127.0.0.1:6379> zadd myzset2 1 "one" 2 "two" 5 "three"
(integer) 3
127.0.0.1:6379> zincrby myzset2 5 "one"
"6"
127.0.0.1:6379> zrange myzset2 0 -1 withscores
1) "two"
2) "2"
3) "three"
4) "5"
5) "one"
6) "6"
one的score从1变为6
 zrank
返回名称为 key 的 zset 中 member 元素的排名(按 score 从小到大排序)即下标
127.0.0.1:6379> zrange myzset3 0 -1 withscores
1) "one"
2) "1"
3) "two"
4) "2"
5) "three"
6) "5"
127.0.0.1:6379> zrank myzset3 three
(integer) 2
zrevrank
返回名称为 key 的 zset 中 member 元素的排名(按 score 从大到小排序)即下标
127.0.0.1:6379> zrevrank myzset3 three
(integer) 0
 zrevrange
返回名称为 key 的 zset(按 score 从大到小排序)中的 index 从 start 到 end 的所有元素
zrangebyscore
返回集合中 score 在给定区间的元素
127.0.0.1:6379> zrange myzset3 0 -1 withscores
1) "one"
2) "1"
3) "two"
4) "2"
5) "three"
6) "5"
127.0.0.1:6379> zrangebyscore myzset3 1 2 withscores
1) "one"
2) "1"
3) "two"
4) "2"
zcard
返回集合中元素个数
zscore
返回给定元素对应的 score
zremrangebyrank
删除集合中排名在给定区间的元素(根据下标)
zremrangebyscore
删除集合中 score 在给定区间的元素(根据score)

Redis 常用命令

键值相关命令

 keys

返回满足给定 pattern 的所有 key

图片.png

*代表取出所有key

exists
确认一个 key 是否存在
127.0.0.1:6379> exists mylist1
(integer) 1
127.0.0.1:6379> exists fjd
(integer) 0
0表示不存在
del
删除一个 key
127.0.0.1:6379> del mylist4
(integer) 1
 expire
设置一个 key 的过期时间(单位:秒)
127.0.0.1:6379> expire mylist6 1
(integer) 1
存在1秒就过期
move
将当前数据库中的 key 转移到其它数据库中
127.0.0.1:6379> select 0
OK
127.0.0.1:6379> set age 10
OK
127.0.0.1:6379> move age 1
(integer) 1
127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> get age
"10"
 persist
移除给定 key 的过期时间
127.0.0.1:6379[1]> expire age 600
(integer) 1
127.0.0.1:6379[1]> ttl age
(integer) 593
127.0.0.1:6379[1]> persist age
(integer) 1
127.0.0.1:6379[1]> ttl age
(integer) -1
randomkey
随机返回 key 空间的一个 key
 rename
重命名 key
type
返回值的类型
服务器相关命令
ping
测试连接是否存活
127.0.0.1:6379> ping
PONG
 echo
在命令行打印一些内容
select
选择数据库。
quit
退出连接。
 info
获取服务器的信息和统计
config get
获取服务器配置信息
127.0.0.1:6379> config get dir
1) "dir"
2) "/root"
 flushdb
删除当前选择数据库中的所有 key。
127.0.0.1:6379> dbsize
(integer) 12
127.0.0.1:6379> flushdb
OK
127.0.0.1:6379> dbsize
(integer) 0
flushall
删除所有数据库中的所有 key

                                                                              下一篇:Redis的持久化以及主从复制

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

real向往

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值