Redis数据库
一、简介
redis数据库是一个基于内存存储的数据库,所以,redis数据库的访问速度极快,因此,redis数据库可以做缓存系统,redis数据库一般用于做分布式的集群,可以提高网站的响应速度,redis数据库的数据存储是用key-value形式存储的。
二、redis数据库优点
- redis数据库开源免费的。
- redis数据库支持多种数据结构,比如:字符串、列表、哈希表、集合(有序集合和无序集合)。
- 支持原子操作、支持事务。
- 支持发布和订阅。
- 支持数据过期功能。
- 对数据有高可用性和可扩展性。
三、redis数据库的安装及启动
Redis安装包:
Redis-x64-3.2.100版本安装包
提取码:9u9i
安装:解压即可
启动数据库:
启动服务:redis-server redis.windows.conf
启动数据库:redis-cli
直接点击redis文件不能指定配置文件,所以需要在cmd中启动
四、Redis数据库操作
注:Redis数据库默认端口号是:6379
- redis数据库默认有16个数据库【0-15】,默认进入的是0库。
- select 数据库名 :切换数据库。
- keys * :查看所有的键。
- expire 键 秒数:设置过期时间。
- persist 键:移除过期时间。
- del 键:指定键进行删除。返回值代表删除的个数。
- flushdb:清空当前数据库中的所有内容。
- flushall:清空所有数据库的所有内容。
1. 字符串操作
(1)set key value:设置一个键值对,返回ok代表设置成功。如果对同一个key设置不同值,相当于修改。
(2)get key:获取对应键的值。
(3)setnx key value:设置一个键值对,如果键存在,不会覆盖,不存在则设置。
(4)setex key 秒数 value:设置一个指定有效期的键值对。
(5)setrange key 偏移量(索引) value :替换,从偏移量的位置开始替换,返回值是替换后的字符串的长度。
(6)mset key1 value1 key2 value2……:批量设置键值对
(7)mget key1 key2……:批量获取。
(8)msetnx key1 value1 key2 value2……:批量设置键值对,如果键存在不会覆盖,不存在则创建。
(9)getset key new_value:获取key的原值,设置新值,返回值是原值。
(10)getrange key start end:获取指定范围(索引范围:[start,end])的内容
(11)incr key:给对应键的值++,就是+1
(12)incrby key value :给对应键的值,加上指定的数
(13)decr key :给对应键的值–,就是-1
(14)decrby key value:给对应键减去对应的值
(15)append key value:给指定的键追加指定的值,返回值是增加后的总长度。
(16)strlen key:查看字符串的长度。
2. Redis数据库中的列表指令
注:redis数据库中的列表是双向链表结构,基于这种结构,redis数据库的列表可以实现栈和队列。
(1)lpush key value:在列表头部插入元素,返回值代表添加后的列表的长度。
(2)lrange key start stop:查看列表中指定范围的元素。
(3)rpush key value:在列表尾部插入元素
(4)lpop key:从头部弹出一个元素,返回值是删除的元素
(5)rpop key:从尾部弹出一个元素,返回值是删除的元素
(6)linsert key BEFORE|AFTER 值 新值:在原有元素之前或之后插入一个元素,返回值是插入之后的列表的长度。
(7)lset key 索引 新值:修改指定索引位置上的元素。
(8)lrem key count 值:从key中删除指定数量的元素。
count>0 代表头部删除
count<0 代表尾部删除
count=0 代表全部删除
(9)ltrim 键 start end:保留[start,end]范围内的元素,或者删除[start,end]范围外的元素。
(10)lindex 键 索引 :查看指定索引上的元素
(11)rpoplpush key1 key2 :从key1的尾部删除元素,将删除的元素添加到key2的头部,返回值是删除的元素。
(12)llen 键:查看列表的长度
3. Redis数据库中的无序集合
注:集合是没有重复元素的
(1)sadd key member1 member2……:向集合中插入多个元素,返回值是插入成功的元素数量。
(2)smembers key:查看集合中的元素数量。
(3)srem key value1 value2……:指定成员进行删除,返回值是删除成功的元素数量。
(4)spop key 【count】:从集合中随机弹出count个元素,默认弹出1个 ,返回值是弹出的元素。
(5)srandmember key [count]:随机获取count个元素,默认获取一个,返回值是获取的元素。
(6)smove key1 key2 value :将key1中的value移动到key2中。
(7)scard key:查看集合长度。
(8)sdiff key1 key2 :查看两个集合中的差集。
(9)sinter key1 key2:查看两个集合的交集。
(10)sunion key1 key2 :查看两个集合的并集。
(11)sismember key value:判断value是否在集合中存在,返回值1代表存在,0代表不存在。
五、有可能被问到的有关Redis数据库的面试题:
redis数据库和memcached数据库相比,区别是什么?
- Redis和memcached都是基于内存存储的数据库。
- Redis数据库可以用来存储数据,memcached用来做缓存。
- 对于Redis数据库来说,存储的数据库结构有多种,但是对于memcached数据库来说,存储的内容只能是字符串类型。
- memcached数据库和Redis数据库相比,延迟要低一点。