(一)Redis的基本类型
String,List,Set,Hash,Zset
三种特殊类型:geospatial(地理空间数据)、hyperloglog[基数估算(去重计数)]、bitmaps(位图)
2.常用的redis-key的命令
(1)keys *
#查看所有的key
(2)set name Lisa
#设置key
(3)keys *
#查询所有的key
(4)Exists name
#判断当前的key 是否存在
(5)move name 1
#redis的数据库总共有0-15,这个命令是把默认数据库0的name数据移动到1号数据库中
(6)get name
#查询name的具体值
(7)Expire name 10
#设置key的过期时间,单位是秒
(8)ttl name
#查看当前key的剩余时间
(9)type name
#查看当前key的一个类型
(10)ping
#连通redis的服务器
其他命令去官网查询
(11)flushdb
清空当前数据库中的所有键值对。
(12)flushall
清空 Redis 中所有数据库的所有数据。
3.String字符串类型详解
(1)ser key1 v1
#设置值
(2)get key1
#获取值
(3)keys *
#获得所有的key
(4)EXISTS key1
#判断某一个key是否存在
(5)APPEND key1 ”hello“
#追加字符串,如果当前key不存在,就相当于setkey
(6)get key1
(7)STRLEN key1
#获取字符串的长度
(8)APPEND key1,”Lisa“
(9)STRLEN key1
(10)步长命令
set views 0 #初始浏览量为0
get views
incr views #自增1,浏览量变为1
incr views
get views
decr views #自减1,浏览量减1
INCRBY views 10 #可以设置步长,指定增量
DECRBY views 5 #可以设置步长,指定减量
(11)字符串范围
set key1 ”hello,Lisa"
#设置key1的值
get key1
GETRANGE key1 0 3
#截取字符串[0,3],输出”hell”
GETRANGE key1 0 -1
#获取全部的字符串,和get key的命令一样,输出”hello,Lisa"
#比如微信文章的阅读量和在看量
(12)字符串替换
set key2 abcdefg
get key2
#输出”abcdefg“
SETRANGE key2 1 xx
#替换指定位置开始的字符串
get key2
#”axxdefg“
(13)
#setex(set with expire):设置过期时间
#setnx(set if not exist):不存在设置(分布式锁中常常会使用)
setex key3 30 ”hello“
#设置key3的值为hello,30秒后过期
ttl key3
#查询key3的剩余时间
setnx mykey ”redis"
#如果mykey不存在,创建mykey,返回1(创建成功)
keys *
setnx mykey ”monggoDB“
#如果mykey存在,创建失败,返回0(创建失败)
get mykey
#redis
(14)mset同时设置多个值,mget同时get多个值。
mset k1 v1 k2 v2 k3 v3
#同时设置多个值
keys *
#1)"k1” 2)"k2” 3)“k3”
mget k1 k2 k3
#同时获取多个值,会返回1)"v1” 2)"v2” 3)“v3”
msetnx k1 v1 k4 v4
#msetnx是一个原子性操作,同成功同失败
(15)对象
getset:先get后set
getset db redis #如果不存在值,则返回null
#nil
get db
#“redis"
getset db mongodb #如果存在值,获取原来的值,并设置新的值
#“redis"
getdb
”mongodb“
补充:CAS是乐观锁,无锁操作,轻量级的锁。先比较再交换。