(一)redis概述:
高性能键值对数据库,支持的键值数据类型:
1.字符串类型(string)
2.字符串列表类型(list)
3.有序集合类型(sortset)
4.哈(hash)希散列类型
5.字符串集合类型(set)
(二)redis应用场景:
1.缓存.:数据的查询,新闻信息,商品信息,聊天室在线好友的列表
2.任务队列(秒杀,抢购等等)
3.网站访问的统计
4.数据过期处理:精确到毫秒应用排行榜
5.分布式集群架构中的session的分离
(三).数据结构
(1).数据结构之一字符串存储 (String)
1.二进制操作,二进制安全,存入和获取的数据相同
2.Vlue最多可以容纳的数据长度是512M
存储存储String常用的命令:
1.赋值: set company imooc
2.取值:get company 得到"imooc"; 例如:getset company baidu 现获取company的值再设置company的新值百度
3.删除 :del person (无值nil)
(1)递增,incr num 如果没有num初始值默认0 +1
(2)递减 decr num 如果没有num初始值默认0 -1
4:扩展命令:
(1),incrby 某一个key value 例如:incrby num 5
可以将指定的value加几 ,如果key不存在,默认为0,再加5,不能转成整形返回错误信息
(2),decrby 某一个key value 例如:decrby nummber 3 (没有3减去3就是-3了)
可以将指定的value减几 ,如果key不存在,默认为0,再减3,不能转成整形返回错误信息 (3)append key value ----拼凑字符串
如果key存在,在原有的value后追加这个值
append num 5
结果:(integer)2
get num
结果: "35"
如果key不存在,它会创建一个字符串
append num5 123
结果:(integer)3
get num5
结果: "123"
(2).数据结构之二哈希(hash)
存储Hash(map容器)存储值,对象的信息,用户名密码年龄信息,如果hash包含了很少的字段,那么这个类型的数据将占有很少磁盘空间
1.String Key和String Value的map容器
2.每个Hash可以存储4294967295个键值对
存储存储Hash常用的命令:
1.赋值:
hset myhash username jack (存值操作)
hset myhash age 18 (存值操作)
hmset myhash username2 rose age 18 (可以设置多个keyvalue操作)
2.取值:
hget myhash username
得到"jack";
hmget myhash username age
(1)"jack"
(2)"18"
hgetall myhash (获取全部属性,属性值)
3.删除 :
hdel myhash username2 age (删除多个属性)
(integer)0
del username2
4:增加数字:
(1)增加数字,hincrby num
5:自学命令:
(1)hexists myhash username 判断指定key中的某个属性是否存在
返回结果:(integer) 1
(2)hexists myhash password
返回结果:(integer) 0
(3)hgetall myhash
1)"user"
2)"jack"
3)"age"
4)"23"
hlen myhash
返回结果:(integer) 2
hkeys myhash(获得所有key)
返回结果:
1)username 2)age hvals myhash(获得所有key的值)
返回结果:
1)jack 2)23
(3).数据结构之一存储list
概述:
在redis中,list类型是按着插入顺序排序的字符串的链表和数据结构中的普通链表一样的我们可以在它的头部左侧-尾部右侧去添加新的元素,在插入的时候如果该键不存在,那么redis会这个键创建一个新的链表,与此相反如果链表中的所有元素都移除了,该键也会被从数据库中删除.
元素的插入和删除效率:
如果我们在链表两头插入和删除元素是非常高效的操作.
如果链表中存在了100w中条记录,也可在常量的时间完成
如果元素的插入和删除的操作是作用在链表的中间,那么效率就比较低了
1.ArrayList使用数组方式
2.linklist使用双向链接方式
3.双休链表中增加数据
3.双休链表中删除数据
存储
存储list常用的命令:
1.两端添加
左侧添加
lpush mylist a b c
lpush mylist 1 2 3
mylist链表样式模型展示:
|-----------------------------------------------------|
| 3 | 2 | 1 | c | b | a |
|-----------------------------------------------------|
右侧添加
rpush mylist2 a b c
rpush mylist2 1 2 3
mylist2链表样式模型展示:
|------------------------------------------------------|
| a | b | c | 1 | 2 | 3 |</