本人已参与「新人创作礼」活动,一起开启掘金创作之路。
前言
大家好,我是掘金新用户小钻风头领,今天是我正式更文的第五天;
String
set name "goudan" #存一个key为name的值为goudan
get name #取值 name为key
key * #获得所有的key
EXISTS name #判断一个key是否存在
APPEND key "xxx" #追加字符串 没有此key的话就相当于set key
## i++ 适用于浏览量+1
set views 0 #创建初始化为0
get views #查看
incr views #自增1
decr views #减1
INCRBY views 10 #设置步长
DECRBY views 5 #步长-5
## 取出某些个字符
GETRANGE key 0 3 #获取开头到3的字符 -1是全部 0 1 2 3
##添加字符串
set key1 aaaaa
setrange key1 1 bb #插入bb到下标1 abbaaaa
##setex(set with expire) 设置过期时间
##setnx(set if not exist) 不存在则设置 分布式锁中常用
setex key2 30 "alal" #设置key2的值为alal,30秒过期
setex mykey "lph" #如果mykey不存在,就创建mykey
setex myley "lpggg" #如果存在 则创建失败
##同时设置多个值
mset
mget
mset k1 v1 k2 v2 k3 v3 #一次设置多个值
key * #获得所有的key
"k1"
"k2"
"k3"
mget k1 k2 k3 #取出所有的值
"v1"
"v2"
"v3"
msetnx k1 v1 k4 v4 #原子型操作 要么都成功 : ?
#对象
set user:1{name:zhangsan,age:12}
mset user:1:name lisi #创建一个user对象 name age address
user:1:age 20
user:1:adderss beijing
mget user:1:name user:1:age user:1:address #取出user:1:name的值等。。
##getset 先获取在设置值
getset age 90 #如果不存在值 返回null
null
get age
90
getset age 20 #如果存在值 先返回
90
get age #在显示新存的
20
List
在redis里 list可以做栈,队列,阻塞队列 ,值可重复
#list命令都是L开头
Lpush list one #push 存值
Lpush list two
Lpush list three
LRANGE 0 -1 #取出所有
"three" "tow" "one" #先进先出
Rpush list zoom
LRANGE 0 -1
three tow one zoom #插入到最右边
#移除
LPOP #移除左边的 也就是最后存进去的
RPOP #移除右边的 也就是第一个存进去的
LPOP list #移除列表的第一个元素
tow one
RPOP list #移除列表的最后一个元素
tow
#下标
Lindex
lindex list 1
#移除指定的值
lrem
lrem list 1 one #代表移除1个元素 one
lrem list 2 three #代表移除2个元素 three
#Trim
Ltrim #截取需要的
Lpush mylist "a"
Lpush mylist "b"
Lpush mylist "c"
Lpush mylist "d"
d c b a
ltrim 1 2
c b
#RPOPLPUSH 截取现有list的最后一个元素到一个新的list
Lpush mylist "a"
Lpush mylist "b"
Lpush mylist "c"
Lpush mylist "d"
rpoplpush mylist newmylist
#此时的mylist
#a b c
#此时的newmylist
#d
#lset 更改指定下表的值
lset list 0 ggogog #将list下标为0 的值 改为 ggogog 下标不存在值就会报错
#LINSERT 插入值到某个元素的后面或前面
linsert mylist before "那个元素" "要插入的值" #在某个元素前插入什么值
linsert mylist after "a" "b" #在a元素后插入b
##list总结:
实际就是一个链表 before node after left rigth 都可以插入值
如果key不存在,创建新的链表
如果key存在,新增内容
如果移除key 那么就成了一个空链表
两边插入 和 修改值效率最好
消息队列:左边进去右边出 (lpush rpop)
栈:左边进去左边出 (lpush lpop)