Redis基操
redis不区分大小写,而且redis是单线程数据库(不支持多线程),故redis是基于内存操作,cup不是redis的性能瓶颈,其瓶颈是网络带宽和机器内存
一、常用数据库级别指令
select index
切换不同数据库:redis初始数据库有16个,默认使用的是第零个数据库,不同数据库可以存不同的值
dbsize
查看当前数据库大小
keys *
查看当前数据库的所有key
set key val
以键值对的方式插入数据
get key
通过key获取value
mset key1 val1 key2 val2…
批量设置值
mget key1 key2 key3 …
批量获取值
setnx key val
在插入时判断字符串是否存在(常在分布式锁中使用)
msetnx key1 val1 key2 val2…
批量设置时,判断是否存在(原子性操作)
set key:id{key1:val1,key2:val2}
设置对象
getset key val
先获取,在设置(没有则创建,有则更改)
flushdb
删除当前库
flushall
删除所有数据库
setex key time value
在插入数据时,设置过期时间,单位:秒(s)
expire key time
插入完数据后,设置过期时间,单位是秒(s)
ttl key
查看剩余过期时间(-2表示已过期,-1表示永久不过期)
type key
查看key存储的值的类型
二、String类型的常用指令
incr key
将key所在的值加1(只能是int类型的,如果String中存的是数字例如set key1 ‘1’,那么执行该指令也会将String中的值增1)
decr key
将key所在的减少1(只能是int类型的,如果String中存的是数字例如set key1 ‘1’,那么执行该指令也会将String中的减少1)
incrby key n
将key所在的值加n(只能是int类型的,如果String中存的是数字例如set key1 ‘1’,那么执行该指令也会将String中的值增n)
debrby key n
将key所在的减少n(只能是int类型的,如果String中存的是数字例如set key1 ‘1’,那么执行该指令也会将String中的值减少n)
getrange key head end
截取字符串,通过key截取从head 开始到end结束的字符串(下标0开始)
getrange key 0 -1
截取所有字符串
三、List类型的常用指令
所有的list命令都以1开头,可以看做栈或者队列的结构
lpush key val
设置值,将一个或多个值插入表头(第一行数据的位置)
rpush key val
设置值,将一个或多个值插入表尾(最后一行数据的位置)
lrange key head end
查询从head到end的值
lrange key 0 -1
查询所有的值
lpop key
移除表头(第一行数据)
rpop key
移除表尾(最后一行数据)
lindex key index
查询单个值(起始从0开始)
llen key
获取当前list的长度
lrem key count val
移除指定的值,count:移除的个数
ltrim key head end
截断从head开始,到end结束
rpoplpush key1 key2
移除列表最后一个元素并将其移动到另一个列表(key2)中
lset key index val
更新数据,index表示第几个元素(下标从0开始),val表示更新后的值
linsert key befor/after val newval
插入数据,在前面/后面插入数据
四、Set类型的常用指令
Set中的值时不能重复的
sadd key val
插入元素
smembers key
查看指定set的key的所有值
sismember key val
判断是否存在set中
scard key
获取set长度
srem key val
移除值
srandmember key
随机抽取元素
smove key1 key2 val
将一个指定的值移动到另一个set集合(key2)
sdiff key1 key2
取两集合的差集
sinter key1 key2
取两集合的交集(共同好友实现)
sunion key1 key2
取两集合的并集
五、Hash类型常用指令
Hash也是key-value的形式,与set有所不同的是,Hash的value时map集合的,所以Hash的形式时key-map的形式(存在则覆盖)[常常存储变更数据(用户信息保存,经常变更的信息)]
hset mapname key val
存数据
hget mapname key
取数据
hgetall key
获取一个key中的所有值
hdel mapname key
删除指定的key字段,值也删除
hlen mapname
获取当前mapname的长度
hkeys mapname
获取当前mapname下的所有key
hvals mapname
获取当前mapname下的所有val
hexists key val
判断某个值是否存在
hincrby mapname key n
将mapname下的key所对应的值增加n或者减少n(取决于n的值是正数还是复数)
hsetnx mapname key val
存在则不设置值,不存在则设置值
六、Zset类型常用指令
zset是一个有序集合,可以实现权重,类似于热点排行榜
zadd name index val
添加,index是权重,可以设置1那么排名就是第一
zrange name 0 -1
获取所有值
zrangebyscore name -inf +inf
通过权重标志排序(-inf +inf是负无穷到正无穷排序,可以换成准确的数字)
zrem name val
移除元素
zcard name
获取指定元素的个数
zcount name head end
判断区间内的值有多少个
七、特殊数据类型geospatial
geospatial地理位置,具体场景:朋友定位,附近的人,打车距离计算…
geoadd key 经度 纬度 name
添加地理位置(南北两极无法直接添加)
geopos key name
查询城市的经纬度
geopos key name1 name2 …
查询多个城市的经纬度
geodist key name1 name2 km
查询两地的距离单位是km,可以换成:m(米),km(千米),mi(英里),ft(英尺)
georadius key 经度 纬度 半径 km [withdist] [withcoord]
以给定的经度纬度为中心,找出某一半径内的元素,可选参数withdist显示距离,withcoord显示经纬度。单位是km,可以换成:m(米),km(千米),mi(英里),ft(英尺)。
georadiusbymember key name 半径 km [withdist] [withcoord]
以给定元素为中心,找出某一半径的元素,可选参数withdist显示距离,withcoord显示经纬度。单位是km,可以换成:m(米),km(千米),mi(英里),ft(英尺)。
八、Redis的事务
事务的本质是一组命令的集合,也就是说,一个事务所有的命令都会被序列化,与其他的事务相同,ACID的原则,要么同时成功,要么同时失败,每单条指令都是具有原子性的,但是redis不保证原子性。
multi
开启事务
exec
执行事务
discard
放弃事务
标签:set,val,key2,key1,redis,mapname,key,常用命令 From: https://blog.csdn.net/paopaozaixue/article/details/142487588如果遇到编译时异常,则事务中所有的命令都不会被执行。运行时异常,其他代码照常执行,异常代码报错。