一、概念
1. 什么是Redis
Redis是一个使用 C 语言编写的,开源的(BSD许可)高性能非关系型(NoSQL)的键值对数据库。
Redis可以存储键和五种不同类型的值之间的映射。键的类型只能为字符串,值支持五种数据类型:字符串、列表、集合、散列表、有序集合。
与传统数据库不同的是 Redis 的数据是存在内存中的,所以读写速度非常快,因此 redis 被广泛应用于缓存方向,每秒可以处理超过 10 万次读写操作,
是已知性能最快的Key- Value DB。另外,Redis 也经常用来做分布式锁。除此之外,Redis 支持事务 、持久化、LUA脚本、LRU驱动事件、多种集群方案。
2. 什么是NOSQL
NoSQL ( NoSQL = Not Only SQL) ,意即“不仅仅是SQL”,是一项全新的数据库理念,泛指非关系型的数据库。
二、Redis的数据结构
redis存储的是:key, value格式的数据,其中key都是字符串,value有5 种不同的数据结构:
1 ) 字符串类型(string)
2 ) 哈希类型(hash): Map
3 ) 列表类型(linkList): LinkList(支持重复元素)
4 ) 集合类型(set): Set(不允许重复元素)
5 ) 有序集合类型(sortedset): 不允许重复元素,且元素有顺序(也是相当于Colletion形式,但是可以自动排序)
三、命令操作
1. 字符串类型(String)
1. 存储:set key value
127.0 .0 .1 : 6379 > set username zhangsan
OK
2. 获取:get key
127.0 .0 .1 : 6379 > get username
"zhangsan"
3. 删除:del key
127.0 .0 .1 : 6379 > del username
( integer) 1
2. 哈希类型(Hash)
1. 存储:hset key field value
127.0 .0 .1 : 6379 > hset myhash username lisi
( integer) 1
127.0 .0 .1 : 6379 > hset myhash password 123
( integer) 1
2. 获取:
* hget key field:获取指定的field对应的值
127.0 .0 .1 : 6379 > hget myhash username
"zhangsan"
127.0 .0 .1 : 6379 > hget myhash password
"123456"
* hgetall key:获取所有的field和value
127.0 .0 .1 : 6379 > hgetall myhash
1 ) "username"
2 ) "zhangsan"
3 ) "password"
4 ) "123456"
3. 删除:hdel key field
127.0 .0 .1 : 6379 > del myhash username
( integer) 1
127.0 .0 .1 : 6379 > del myhash password
( integer) 0
为空时,则显示:
127.0 .0 .1 : 6379 > hget myhash password
( nil)
3. 列表类型(LinkList:重复元素):可以添加一个元素到列表的头部(左边)或者尾部(右边)
1. 添加:
* 1. lpush key value: 将元素加入列表左表
127.0 .0 .1 : 6379 > lpush mylist a
( integer) 1
127.0 .0 .1 : 6379 > lpush mylist b
( integer) 2
* 2. rpush key value:将元素加入列表右边
127.0 .0 .1 : 6379 > rpush mylist c
( integer) 3
127.0 .0 .1 : 6379 > rpush mylist d
( integer) 4
2. 获取:lrange key start end :范围获取
127.0 .0 .1 : 6379 > lrange mylist 0 - 1
1 ) "b"
2 ) "a"
3 ) "c"
4 ) "d"
3. 删除:
* lpop key: 删除列表最左边的元素,并将元素返回
127.0 .0 .1 : 6379 > lpop mylist
"b"
127.0 .0 .1 : 6379 > lpop mylist
"a"
* rpop key: 删除列表最右边的元素,并将元素返回
127.0 .0 .1 : 6379 > rpop mylist
"d"
127.0 .0 .1 : 6379 > rpop mylist
"c"
4. 集合类型(Set:不允许重复元素)
1. 存储:sadd key value
127.0 .0 .1 : 6379 > sadd myset a
( integer) 1
127.0 .0 .1 : 6379 > sadd myset a
( integer) 0
127.0 .0 .1 : 6379 > sadd myset b
( integer) 1
2. 获取:smembers key: 获取set集合中所有元素
127.0 .0 .1 : 6379 > smembers myset
1 ) "b"
2 ) "a"
3. 删除:srem key value: 删除set集合中的某个元素
127.0 .0 .1 : 6379 > srem myset a
( integer) 1
127.0 .0 .1 : 6379 > smembers myset
1 ) "b"