它可以用作数据库、缓存和消息中间件
NoSQL数据库
key
基本操作命令
1切换数据库
select 0
2插入数据
set class 0905
3 获得数据
get class
4删除数据
del class
5清空当前数据库
flushdb
6清空所有数据库
flushall
7查看所有数据
keys *
8统计数据库数据
dbsize
9判断是否存在key值
exists name
10设置过期时间
expire name 10
11查看类型
type name
12 移动key到其他数据库
move name 1
5个基本数据类型
字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets)
1字符串String
append追加
使用APPEND命令在字符串后添加内容。
append key value
有则追加,没则新增
strlen查看长度
strlen key
incr 自增1
利用INCR命令簇(INCR, DECR, INCRBY)来把字符串当作原子计数器使用
incr views 自增1
decr 自减1
decr views 自减1
incrby 增加步长
incrby views 加10
decrby 减少步长
decrby views 减5
range字符串范围
GETRANGE
getrange name 0 3截取四个字符
getrange name 0 -1查看所有字符
SETRANGE
setrange name 1 xx替换指定位置开始的字符串
setex,setnx
setex(set with expire)设置过期时间
setnx(set if not exist)不存在在设置
setex key 30 aaa 设置key的值aaa,30秒后过期
ttl key
setnx key aaa 如果不存在key ,创建key。如果存在,创建失败
mset,mget批量设置值
msetnx
mset k1 v1 k2 v2 k3 v3
mget k1 k2 k3
msetnx k1 v1 k4 v4
k1存在,原子性这条语句执行返回0
对象
user:{id}:{filed}
mset user:1:name sam user:1:age 2
mget user:1:name user:1:age
getset
先get然后再set
如果不存在返回nil
如果存在,获取原来的值,设置新的值
2列表list
LPUSH 命令插入一个新元素到列表头部,
而RPUSH命令 插入一个新元素到列表的尾部
lpush,rpush
LPUSH mylist “world”
LPUSH mylist “hello”
LRANGE mylist 0 -1
lpop,rpop
移除第一个值
lindex
lindex list 1
通过下标获取值
llen
llen list 返回list长度
lrem移除指定的值
lrem list 2 one
移除两个one
ltrim截取
ltrim list 1 2
rpoplpush
删除列表中的最后一个元素,将其追加到另一个列表
lset
lset list 0 aaa
更新指定下标的值
exists list
判断列表是否存在
linsert
linsert list before aaa 888
在aaa前面插入888
linsert list after 888 ddd
在888后面插入ddd
3集合
sadd
sadd myset aaa
smembers
查看集合所有元素
smembers myset
SCARD key
返回集合存储的key的基数 (集合元素的数量).
SREM key member [member …]
在key集合中移除指定的元素. 如果指定的元素不是key集合中的元素则忽略 如果key集合不存在则被视为一个空的集合,该命令返回0.
如果key的类型不是一个集合,则返回错误.
SPOP key [count]
从存储在key的集合中移除并返回一个或多个随机元素。
SMOVE source destination member
将member从source集合移动到destination集合中
sdiff
获取队列不存在的元素
SUNION key [key …]
返回给定的多个集合的并集中的所有成员
4哈希hash
Map集合
HSET key field value
HGET key field
返回 key 指定的哈希集中该字段所关联的值
HDEL key field [field …]
删除
HDEL myhash field1
HGETALL key
返回 key 指定的哈希集中所有的字段和值
hlen myhash
获取长度
hkeys
hkeys myhash 只获取field
hvals
hvals myhash只获取value
5有序集合Zset
zadd
ZADD key [NX|XX] [CH] [INCR] score member [score member …]
ZADD myzset 1 “one”
ZRANGEBYSCORE
ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]
三个特殊数据类型
地理空间(geospatial) ,Bitmaps 和 HyperLogLogs
Redis持久化
RDB AOF
port | 默认端口号6379 |
---|---|
bind | 允许访问的IP |
time | client空闲多少秒后关闭连接,0代表无限制 |
loglevel | 日志级别debug,verbose,notice(默认),warning |
logfile | 日志文件地址 |
databases | 数据库数量 |
save | RDB文件同步频率 |
dir | rdb目录 |
requirepass | 访问数据库密码 |
maxclients | 最大连接数 |
maxmemory | 占用内存大小 |
appendonly | 开启AOF备份 |
appendfsync | AOF同步频率,no,everysec,always |
Redis字符串类型
字符串 | set name 张三 |
---|---|
哈希 | hmset 1000 ename mike job manager deptno 23 |
列表 | rpush ,lpush,lset lrange |
集合 | |
有序集合 | |
截取前三个字符内容 |
getrange name 0 2
获取字符串长度
strlen name
设置过期时间(数据多久消失)
setex name 3 李四
字符串
mset 设置多个key-value
mset username 张三 password 123123
mget获取多个value
mget username password
append追加
set name 张三
append name 123
incr数字自增/ decr 数字自减
set number 1
数字自增
incr number
incrby数字加法/decrby数字减法
incrby number 25
incrbyfloat num 3.5
哈希指令
hget获取一个值
hget 1000 name
获取多个哈希表字段
hmget 1000 name job depno
获取所有内容
hgetall 1000
hkeys获取所有字段
hvals获取所有字段值
hlen字段数量
hdel删除数据表字段
hdel 1000 job name
是否存在某个字段
hexists 1000 name
hincrby加
hincrby 1000 deptno 20
hincrbyfloat 加浮点数
列表
左插,右插值
rpush name 李四 王五 赵六
lpush name 孙七
修改值,指定索引,将name中第二个改为孙前
lset name 2 孙前
查询所有内容
lrange name 0 -1