Redis数据库操作详细讲解
Redis数据库简介及基本操作一:简介redis 数据库是一个基于内存存储的数据库,所以,redis数据库的访问速度极快,因此,redis数据库可以做缓存系统,redis数据库一般用于做分布式的集群,可以提高网站的响应速度,redis数据库的数据库存储是用key-value形式存储的二:redis数据库优点redis数据库开源免费redis数据库支持多种数据结构,比如:字符串,列表,哈希表,集合(
Redis数据库简介及基本操作
一:简介
redis 数据库是一个基于内存存储的数据库,所以,redis数据库的访问速度极快,因此,redis数据库可以做缓存系统,redis数据库一般用于做分布式的集群,可以提高网站的响应速度,redis数据库的数据库存储是用key-value形式存储的
二:redis数据库优点
- redis数据库开源免费
- redis数据库支持多种数据结构,比如:字符串,列表,哈希表,集合(有序集合和无序集合)
- 支持原子操作,支持事务
- 支持发布和订阅
- 支持数据过期功能
- 对数据有高可用性和可扩展性
三:redis和memcache的区别
- redis和memcache都是基于内存存储的数据库。
- redis数据库可以用来存储数据,memcache用来做缓存
- 对于redis数据库来说,存储的数据库结构有多种,但是对于mencache数据库来说,存储的内容只能是字符串类型
- memcached数据库和redis数据库相比,延迟要低一点
四:redis数据库操作
redis数据库默认有16个数据库[0~15],默认进入的是0库
select 数据库名:切换数据库
keys *:查看所有的键
expire 键 秒数:设置过期时间
persist 键:移除过期时间
del 键:指定键进行删除。返回值代表删除的个数。
flushdb:清空当前数据库中的所有内容
flushall:清空所有数据库的所有内容
(一):字符串的操作
-
set key value:设置一个键值对,返回ok代表设置成功。如果对同一个key设置不同值,相当于修改
127.0.0.1:6379> select 1 OK 127.0.0.1:6379[1]> keys * (empty array) 127.0.0.1:6379[1]> set name zhangsan OK 127.0.0.1:6379[1]> keys * 1) "name"
-
get key:获取对应键的值
127.0.0.1:6379[1]> get name "zhangsan" 127.0.0.1:6379[1]> set name lisi OK 127.0.0.1:6379[1]> get name "lisi"
-
setnx key value:设置一个键值对,如果键存在,不会覆盖,不存在则设置
127.0.0.1:6379[1]> setnx name zhangsan (integer) 0 127.0.0.1:6379[1]> get name "lisi" 127.0.0.1:6379[1]> setnx age 20 (integer) 1 127.0.0.1:6379[1]> keys * 1) "age" 2) "name" 127.0.0.1:6379[1]> get age "20" 127.0.0.1:6379[1]>
-
setex key 秒数 value:设置一个指定有效期的键值对
127.0.0.1:6379[1]> setex age 10 18 OK 127.0.0.1:6379[1]> get age # 10秒前输入 "18" 127.0.0.1:6379[1]> get age # 10秒后输入 (nil) 127.0.0.1:6379[1]>
-
setrange key 偏移量(索引) value:替换,从偏移量的位置开始替换,返回值是替换后的字符串的长度
127.0.0.1:6379[1]> setrange name 1 hh (integer) 4 127.0.0.1:6379[1]> get name "lhhi" 127.0.0.1:6379[1]> setrange name 2 helllo (integer) 8 127.0.0.1:6379[1]> get name "lhhelllo"
-
mset key1 value1 key2 value2 …:批量设置键值对
127.0.0.1:6379[1]> mset gender man hobby skate OK 127.0.0.1:6379[1]> keys * 1) "hobby" 2) "gender" 3) "name"
-
mget key1 key2 …:批量获取
127.0.0.1:6379[1]> mget hobby gender name 1) "skate" 2) "man" 3) "lhhelllo"
-
msetnx key1 value1 key2 value2 …:批量设置键值对,如果有键存在不会进行设置,不存在则创建。
127.0.0.1:6379[1]> msetnx height 56 name zhangsan (integer) 0 127.0.0.1:6379[1]> keys * 1) "hobby" 2) "name" 3) "gender" 127.0.0.1:6379[1]> msetnx height 56 weight 178 (integer) 1 127.0.0.1:6379[1]> keys * 1) "hobby" 2) "gender" 3) "name" 4) "height" 5) "weight"
-
getset key new_value:获取key的原值,设置新值,返回值是原值
127.0.0.1:6379[1]> getset name zhangsan "lhhelllo" 127.0.0.1:6379[1]> get name "zhangsan"
-
getrange key start end:获取指定范围的内容,范围为左闭右闭
127.0.0.1:6379[1]> getrange name 0 4 "zhang"
-
incr key:给对应键的值++,即加1
127.0.0.1:6379[1]> get height "56" 127.0.0.1:6379[1]> incr height (integer) 57 127.0.0.1:6379[1]> get height "57" 127.0.0.1:6379[1]>
-
incrby key value:给对应键的值加上指定的数
127.0.0.1:6379[1]> get height "57" 127.0.0.1:6379[1]> incrby height 5 (integer) 62 127.0.0.1:6379[1]> get height "62"
-
decr key:给对应键的值–,即减1
27.0.0.1:6379[1]> get height "62" 127.0.0.1:6379[1]> decr height (integer) 61 127.0.0.1:6379[1]> get height "61"
-
decrby key value:给对应键减去相应的值
127.0.0.1:6379[1]> get height "61" 127.0.0.1:6379[1]> decrby height 10 (integer) 51 127.0.0.1:6379[1]> get height "51"
-
append key value:给指定的键追加指定的值,返回值是增加后的总长度
127.0.0.1:6379[1]> append name jjj (integer) 11 127.0.0.1:6379[1]> get name "zhangsanjjj" 127.0.0.1:6379[1]> append height jjj (integer) 5 127.0.0.1:6379[1]> get height "51jjj"
-
strlen key:查看字符串的长度
127.0.0.1:6379[1]> strlen name (integer) 11 127.0.0.1:6379[1]> strlen height (integer) 5
(二):列表操作
Redis数据库中的列表是双向链表结构,基于这种结构,redis数据库的列表可以实现栈和队列。
-
lpush key value:在列表头部插入元素,返回值代表添加后的列表的长度
127.0.0.1:6379[1]> lpush name zhangsan (integer) 1 127.0.0.1:6379[1]> keys * 1) "name" 127.0.0.1:6379[1]> lpush name lisi (integer) 2 127.0.0.1:6379[1]> keys * 1) "name" 127.0.0.1:6379[1]> lpush name lisi (integer) 3
-
lrange key start end:查看列表中指定范围的元素
127.0.0.1:6379[1]> lrange name 0 2 1) "lisi" 2) "lisi" 3) "zhangsan"
-
rpush key value:在列表尾部插入元素
127.0.0.1:6379[1]> rpush name wangwu zhaoliu (integer) 5 127.0.0.1:6379[1]> lrange name 0 -1 1) "lisi" 2) "lisi" 3) "zhangsan" 4) "wangwu" 5) "zhaoliu"
-
lpop key:从头部弹出一个元素,返回值是删除的那个元素
127.0.0.1:6379[1]> lpop name "lisi" 127.0.0.1:6379[1]> lrange name 0 -1 1) "lisi" 2) "zhangsan" 3) "wangwu" 4) "zhaoliu"
-
rpop key:从尾部弹出一个元素,返回值是删除的那个元素
127.0.0.1:6379[1]> rpop name "zhaoliu" 127.0.0.1:6379[1]> lrange name 0 -1 1) "lisi" 2) "zhangsan" 3) "wangwu"
-
linsert key BEFORE|AFTER 值 新值,在原有元素之前或之后插入一个元素,返回值是插入之后的列表的长度
127.0.0.1:6379[1]> linsert name AFTER zhangsan zhaoliu (integer) 4 127.0.0.1:6379[1]> lrange name 0 -1 1) "lisi" 2) "zhangsan" 3) "zhaoliu" 4) "wangwu"
-
lset key 索引 新值,修改指定索引位置上的元素
127.0.0.1:6379[1]> lset name 2 xiaoming OK 127.0.0.1:6379[1]> lrange name 0 -1 1) "lisi" 2) "zhangsan" 3) "xiaoming" 4) "wangwu"
-
lrem key count value,从key中删除指定数量的元素,
count > 0 代表头部删除
count < 0 代表尾部删除
count = 0 代表全部删除
127.0.0.1:6379[1]> lrem name -2 wangwu (integer) 1 127.0.0.1:6379[1]> lrange name 0 -1 1) "lisi" 2) "zhangsan" 3) "xiaoming"
-
ltrim key start end,保留[start,end]范围内的元素,或者删除[start,end]范围外的元素
127.0.0.1:6379[1]> lrange name 0 -1 1) "lisi" 2) "zhangsan" 3) "xiaoming" 127.0.0.1:6379[1]> ltrim name 1 1 OK 127.0.0.1:6379[1]> lrange name 0 -1 1) "zhangsan"
-
lindex key 索引,查看指定索引上的元素
127.0.0.1:6379[1]> rpush name lisi wangwu zhaoliu (integer) 4 127.0.0.1:6379[1]> lrange name 0 -1 1) "zhangsan" 2) "lisi" 3) "wangwu" 4) "zhaoliu" 127.0.0.1:6379[1]> lindex name 2 "wangwu"
-
llen key,查看键的长度
127.0.0.1:6379[1]> llen name (integer) 4
-
rpoplpush,从key1的尾部删除元素,将删除的元素添加到key2的头部,返回值是删除的元素
127.0.0.1:6379[1]> lpush age 18 27 24 20 (integer) 4 127.0.0.1:6379[1]> rpoplpush name age "zhaoliu" 127.0.0.1:6379[1]> lrange name 0 -1 1) "zhangsan" 2) "lisi" 3) "wangwu" 127.0.0.1:6379[1]> lrange age 0 -1 1) "zhaoliu" 2) "20" 3) "24" 4) "27" 5) "18"
三:Redis数据库中的无序集合
集合是没有重复元素的,故可用来进行数据的去重
-
sadd key member1 member2 …,向集合中插入多个元素,返回值是插入成功的元素的数量
127.0.0.1:6379[1]> select 2 OK 127.0.0.1:6379[2]> sadd name zhangsan lisi wangwu (integer) 3
-
smembers key,查看集合中的元素数量
127.0.0.1:6379[2]> smembers name 1) "lisi" 2) "zhangsan" 3) "wangwu" 127.0.0.1:6379[2]>
-
srem key value1 value2 …,指定成员进行删除,返回值是删除成功的元素的数量
127.0.0.1:6379[2]> srem name lisi zhangsan (integer) 2 127.0.0.1:6379[2]> smembers name 1) "wangwu"
-
spop key count,从集合中随机弹出count个元素,默认弹出1个,返回值是弹出的元素
127.0.0.1:6379[2]> sadd name zhangsan lisi zhaoliu wangwu xiaoming (integer) 4 127.0.0.1:6379[2]> spop name 2 1) "zhaoliu" 2) "xiaoming" 127.0.0.1:6379[2]> smembers name 1) "lisi" 2) "zhangsan" 3) "wangwu"
-
srandmember key count,随机获取count个元素,默认获取一个,返回值是获取的元素
127.0.0.1:6379[2]> srandmember name 2 1) "lisi" 2) "wangwu"
-
smove key1 key2 value,将key1中的value移动到key2中
127.0.0.1:6379[2]> sadd age 12 30 20 (integer) 3 127.0.0.1:6379[2]> smembers age 1) "12" 2) "20" 3) "30" 127.0.0.1:6379[2]> smove age name 20 (integer) 1 127.0.0.1:6379[2]> smembers age 1) "12" 2) "30" 127.0.0.1:6379[2]> smembers name 1) "lisi" 2) "zhangsan" 3) "20" 4) "wangwu"
-
scard key,查看集合长度
127.0.0.1:6379[2]> scard name (integer) 4
-
sdiff key1 key2,查看两个集合中的差集
127.0.0.1:6379[2]> sadd name2 zhangsan wangwu zhaoliu (integer) 3 127.0.0.1:6379[2]> sdiff name name2 1) "lisi" 2) "20"
-
sinter key1 key2,查看两个集合的交集
127.0.0.1:6379[2]> sinter name name2 1) "zhangsan" 2) "wangwu"
-
sunion key1 key2,查看两个集合的并集
127.0.0.1:6379[2]> sunion name name2 1) "wangwu" 2) "20" 3) "lisi" 4) "zhangsan" 5) "zhaoliu"
-
sismember key value,判断value是否在集合中存在,返回值1代表存在,返回值0代表不存在
127.0.0.1:6379[2]> sismember name zhangsan (integer) 1 127.0.0.1:6379[2]> sismember name xiaoming (integer) 0
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)