redis ,是一个关系型数据库,是一个开源的,内存数据库,因为他的数据操作是基于内存得所以他的效率非常高,他支持100000+ 的QPS.,因为他是用c语言写的,它包含多种数据类型,
1,比较常见的string
2, hashes 散列
3,list 列表
4. set 集合
5 sorted sets 有序集合
redis 是一个单线程的,能用单线程就用单线程,如果用多线程需要多个cpu 来回切换,这并不比单线程效率高
redis 的核心是将所有数据放到内存中,对于内存系统来说,如果没有上下文切换效率是最高的,多次读写都在一个cpu 上,在内存情况下,这个就是最佳方案
QPS每秒查询率(Query Per Second)
每秒查询率QPS是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准,在因特网上,作为域名系统服务器的机器的性能经常用每秒查询率来衡量。对应fetches/sec,即每秒的响应请求数,也即是最大吞吐能力。 (看来是类似于TPS(吞吐量),只是应用于特定场景的吞吐量。
select 3 选择3号数据库,切换数据库
move name 3 移动当前key 到 3号库中
reids 常用命令 :
key 相关的:
keys * 查看所有key
expire name 10 设置过期时间 10s
ttl name 查看还有多久到期
type name 查看当前key 的类型
1,string (字符串)
我只会string 这类型,这是不行的大哥,快去学起来!
set age 1
get age
append age "hello" 追加后边, (注意如果当前key 不存在就相当于 set key )
STRLEN key1 查看key 对应的值的长度
incr key1 计数加 incrby key 10 设置增长量10,,加10
decr key1 减少一 decrby key1 10 设置减少量10, 减少10
字符串范围
getrange key1 0 3 --- java substring( 0,3) 截取字符串 【0,3】
替换
setrange key1 2 xx ----- java 中replace() 替换指定位置开始的字符串
setex (set with expire)设置过期时间 setex key1 30 "hello" 设置key3 值未hello,30s 后过期
setnx (set if not exist) 不存在再设置,在分布式锁常用
mset k1 v1 k2 v2 k3 v3 同属设置多个值
mget k1 k2 k3 同时获取多个值
msetnx k1 v1 k4 v4 他是一个原子性操作,要么一起成功,要么一起失败
对象
set uesr:1 {name :zhagnsang, age:3} 设置一个对象,值未json 字符串保存对象
mset user:1:name zhangsan user:1:age 2
mget user:1:name user:1:age
getset 先get 再set
getset db redis 如果不存再值,则返回nil
get db
"redis"
getset db mongodb 如果存在值,获取原来的值,并设置新的值
”redis“
get db
"mongodb"
LIST
lpush list one
lpush list two
lpush list three
lrange list 0 -1 获取所有值
1) three
2) two
3) one
lrange 0 1
three
two
Rpush list right 将一个值放到尾部 (从右边(尾部)插入值)
Lrange list 0 -1
LPop
Rpop
Lpop list 移除列表的第一个元素
three
Rpop list 移除list 最后一个元素
ringht
Lrange list 0 -1
two
one
Lindex list 1 # 通过下标list
"one"
lindex list 0
"two"
Llen list # 获取列表长度
Lrem list 1 one
Lrem list 2 three (假如有两个重复的值 three ) 同时删除 两个three
rpush mylist "h1"
rpush mylist "h2"
rpush mylist "h3"
rpush mylist "h4"
ltrim mylist 1 2 通过下下表截取掉指定的长度
lrange mylist 0 -1
h1
h2
组合命令,又上边命令组合而成,可以快速实现某些操作
rpoplpush # 移除列表最后一个元素,将他移动到新的列表中
rpoplpush mylist myotherlist
lrange mylist 0 -1
h
h1
lrange myotherlist 0 -1
h2
Lset # 将列表中指定下标的值替换,
exists list # 判断这个列表是否存在
lset list 0 item # 如果不存在列表我们替换就会报错
Linsert # 将列表中具体的某个值插入到某个元素的前面或者后边
Linsert mylist before "world" "other" 在world 之前增加other 值
Linert mylist after world new 在 world 后边增加值new