文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Redis数据库的安装部署以及基本操作介绍

2023-06-20 20:55

关注

本篇内容介绍了“Redis数据库的安装部署以及基本操作介绍”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

Redis数据库概述

Redis是一个开源的、使用c语言编写NoSQL数据库,它是基于内存运行并支持持久化,采用key-value(键值对)的存储形式, 是目前分布式结构中不可或缺的

Redis相比于其他数据库的优点

Redis安装部署

[root@redis ~]# yum install -y gcc gcc-c++ make[root@redis opt]# tar xzf redis-5.0.7.tar.gz [root@redis opt]# cd redis-5.0.7/[root@redis redis-5.0.7]# make [root@redis redis-5.0.7]# make prefix=/usr/local/redis install[root@redis redis-5.0.7]# cd utils/[root@redis utils]# ./install_server.sh#启动安装脚本Please select the redis executable path [/usr/local/bin/redis-server] /usr/local/redis/bin/redis-server##这一步需要手动指定位置,其他都回车即可[root@localhost utils]# ln -s /usr/local/redis/bin/* /usr/local/bin/[root@localhost utils]# netstat -antp | grep redistcp        0      0 127.0.0.1:6379          0.0.0.0:*               LISTEN      23276/redis-server

Redis服务控制

/etc/init.d/redis_6379 stop/etc/init.d/redis_6379 start/etc/init.d/redis_6379 restart/etc/init.d/redis_6379 status

修改配置文件

[root@localhost utils]# vim /etc/redis/6379.conf

Redis数据库的安装部署以及基本操作介绍

[root@localhost utils]# /etc/init.d/redis_6379 restart#重启服务Stopping ...Waiting for Redis to shutdown ...Redis stoppedStarting Redis server...[root@localhost utils]# netstat -antp | grep redistcp        0      0 192.168.118.88:6379     0.0.0.0:*               LISTEN      23492/redis-server  tcp        0      0 127.0.0.1:6379          0.0.0.0:*               LISTEN      23492/redis-server

Redis命令工具

redis-server:用于启动Redis的工具redis-benchmark:用于检测Redis在本机的运行效率redis-check-aof:修复AOF持久化文件redis-check-rdb:修复RDB持久化文件redis-cli:Redis命令行工具redis-cli -h 远程主机ip -p 服务端口号 -a 指定密码如果没有设置数据库密码,可以省略-a选项,若不添加任何选项表示,这使用127.0.0.1:6379连接本机上的Redis数据库

Redis测试工具redis-benckmark

redis-benchmark 选项:-h :指定服务器主机名-P :指定服务器端口-s :指定服务器socket(套接字)-c :指定并发连接数-n :指定请求数-d :以字节的形式指定SET/GET值的数据大小-k :1=keep alive 0=reconnect-r :SET/GET/INCR 使用随机key,SADD使用随机值-p :通过管道传输<numreq>请求-q :强制退出redis-l :生成循环,永久执行测试-t :仅运行以逗号分割的测试命令列表-I :Idle模式,仅打开N哥idle连接并等待
[root@localhost utils]# redis-benchmark -h 192.168.118.88 -P 6379 -c 100 -n 10000##向主机发送100哥并发连接和10000哥请求测试性能[root@localhost utils]# redis-benchmark -h 192.168.118.88 -p 6379 -q -d 10##测试存取10字节的数据包性能PING_INLINE: 925925.88 requests per secondPING_BULK: 1470588.12 requests per secondSET: 900900.88 requests per secondGET: 934579.44 requests per secondINCR: 1136363.62 requests per secondLPUSH: 578034.69 requests per secondRPUSH: 793650.75 requests per secondLPOP: 584795.31 requests per secondRPOP: 806451.62 requests per secondSADD: 840336.12 requests per secondHSET: 746268.62 requests per secondSPOP: 1098901.12 requests per secondLPUSH (needed to benchmark LRANGE): 671140.94 requests per secondLRANGE_100 (first 100 elements): 26089.22 requests per secondLRANGE_300 (first 300 elements): 5534.65 requests per secondLRANGE_500 (first 450 elements): 3414.37 requests per secondLRANGE_600 (first 600 elements): 2345.11 requests per secondMSET (10 keys): 120048.02 requests per second [root@localhost utils]# redis-benchmark -t set,lpush -n 100000 -q##测试本机Redis服务在进行set和lpush操作时的性能SET: 166112.95 requests per secondLPUSH: 191570.88 requests per second

Redis数据库数据类型

每个数据类型的创建key和查看key值都是不同的

String数据类型

[root@redis utils]# redis-cli127.0.0.1:6379> [root@redis utils]# redis-cli#查看所有的键127.0.0.1:6379>  keys *1) "counter:__rand_int__"2) "myset:__rand_int__"3) "mylist"4) "key:__rand_int__"127.0.0.1:6379> keys m*#查看以m开头所有键1) "myset:__rand_int__"2) "mylist"

创建数据,获取数据

127.0.0.1:6379> set whd zhangsan#创建一个键whd,值为zhangsanOK127.0.0.1:6379> keys *#查看创建结果1) "counter:__rand_int__"2) "myset:__rand_int__"3) "mylist"4) "key:__rand_int__"5) "whd"127.0.0.1:6379> get whd#获取键值"zhangsan"

查看键是否存在

127.0.0.1:6379> exists whd#存在返回1,不存在返回为0(integer) 1127.0.0.1:6379> exists www(integer) 0

删除键

127.0.0.1:6379>  del whd(integer) 1127.0.0.1:6379> exists whd(integer) 0

查看键中value的数据类型

127.0.0.1:6379> set aaa bbb OK127.0.0.1:6379> type aaastring

对键重命名

127.0.0.1:6379> rename aaa cccOK127.0.0.1:6379> keys *1) "counter:__rand_int__"2) "myset:__rand_int__"3) "mylist"4) "key:__rand_int__"5) "ccc"##rename也可用来覆盖键值```bash127.0.0.1:6379> get ccc"bbb"127.0.0.1:6379> set ddd fff#新建键ddd,值为fffOK127.0.0.1:6379> rename ccc ddd#将ccc值覆盖dddOK127.0.0.1:6379> get ddd#查看结果"bbb"##renamens,可以判断重命名的新键名是否存在,存在则返回0不做操作,不存在则覆盖并重命名127.0.0.1:6379> set aaa bbbOK127.0.0.1:6379> renamenx ddd aaa(integer) 0

查看当前数据库key的数目

127.0.0.1:6379> dbsize(integer) 6

设置密码,删除密码

127.0.0.1:6379> config set requirepass 123123#设置新密码OK127.0.0.1:6379> auth 123123#认证密码OK127.0.0.1:6379> config get requirepass#查看密码1) "requirepass"2) "123123"[root@redis utils]# redis-cli -h 192.168.118.88 -p 6379#此时可以登录数据库,但是不能进行操作192.168.118.88:6379> keys *(error) NOAUTH Authentication required.192.168.118.88:6379> auth 123123#进行密码认证后才能操作OK192.168.118.88:6379> keys *1) "counter:__rand_int__"2) "aaa"3) "ddd"4) "myset:__rand_int__"5) "mylist"6) "key:__rand_int__"192.168.118.88:6379> config set requirepass ''#删除密码OK

追加数据

127.0.0.1:6379> keys *1) "counter:__rand_int__"2) "aaa"3) "ddd"4) "myset:__rand_int__"5) "mylist"6) "key:__rand_int__"7) "www"127.0.0.1:6379> get www"10"127.0.0.1:6379> append www 20#append,追加数值(integer) 4127.0.0.1:6379> get www"1020"127.0.0.1:6379> append whd 23#如果键不存在,append命令相当于set创建键,并赋值(integer) 2127.0.0.1:6379> get whd"23"127.0.0.1:6379> strlen whd  #strlen判断键值得长度(integer) 2

key值递增/递减,incr/decr/incrby/decrby

127.0.0.1:6379> get whd"23"127.0.0.1:6379> incr whd#INCR递增数值(key值必须为整数)(integer) 24127.0.0.1:6379> incr whd(integer) 25127.0.0.1:6379> decr whd#DECR递减数值(key值必须为整数)(integer) 24127.0.0.1:6379> decr whd(integer) 23127.0.0.1:6379> incrby whd 10#按照指定数值进行递增(integer) 33127.0.0.1:6379> get whd"33"127.0.0.1:6379> decrby whd 5#按照指定数值进行递减(integer) 28127.0.0.1:6379>

getset返回原有值然后给key设置新值

127.0.0.1:6379> getset whd 22#先返回原有key值50,然后给予key新值22(新的值不会打印显示)"50"127.0.0.1:6379> get whd#查看key新的值"22"127.0.0.1:6379> getset whd 66"22"127.0.0.1:6379> get whd"66"

setex支持key的过期时间

127.0.0.1:6379> setex ttt 10 66#指定ttt10秒过期OK127.0.0.1:6379> ttl ttt#ttl可查看生命周期(integer) 3127.0.0.1:6379> ttl ttt#查出-2表示已经过期,-1表示永久保存(integer) -2127.0.0.1:6379> get ttt(nil)127.0.0.1:6379> ttl whd(integer) -1127.0.0.1:6379> setnx whd 22(integer) 0127.0.0.1:6379> setnx whd   22           #setnx可以对键进行判断,有则操作无效,无则创建(integer) 0

批量创建,批量查看

127.0.0.1:6379> mset aa 10 bb 20 cc 30OK127.0.0.1:6379> keys *1) "counter:__rand_int__"2) "cc"3) "myset:__rand_int__"4) "whd"5) "aa"6) "key:__rand_int__"7) "mylist"8) "bb"127.0.0.1:6379> mget aa bb cc1) "10"2) "20"3) "30"127.0.0.1:6379> msetnx aa 10 jj 10 dd 10#msetnx可进行判断,只要有一个键存在,则操作失效,当键都不存在才创建key(integer) 0127.0.0.1:6379> msetnx jj 10 dd 10(integer) 1

List数据类型

127.0.0.1:6379> lpush age a b c d e #lpush由左插入多个键值,(integer) 5127.0.0.1:6379> lrange age 0 -1#lrange查看list数据类型的key值,后面要加查看的范围,这里0表示第一个数,-1表示最后一个数(也可以输入key值个数),1) "e"2) "d"3) "c"4) "b"5) "a"127.0.0.1:6379> lrange age 1 21) "d"2) "c"127.0.0.1:6379> lrange age 3 51) "b"2) "a"127.0.0.1:6379> lpushx age g#lpushx插入一个元素在一个已存在的key的开头(integer) 6127.0.0.1:6379> lrange age 0 -11) "g"2) "e"3) "d"4) "c"5) "b"6) "a"127.0.0.1:6379> lpop age#lpop移除首个元素"g"127.0.0.1:6379> lrange age 0 -11) "e"2) "d"3) "c"4) "b"5) "a"127.0.0.1:6379> lpop age"e"127.0.0.1:6379> lrange age 0 -11) "d"2) "c"3) "b"4) "a"127.0.0.1:6379> llen age#获取key值个数(integer) 4

LREM/LSET/LINDEX/LTRIM

127.0.0.1:6379> del age(integer) 1127.0.0.1:6379> lpush age a b c d d a c(integer) 7127.0.0.1:6379> lrange age 0 -11) "c"2) "a"3) "d"4) "d"5) "c"6) "b"7) "a"127.0.0.1:6379> lrem age 1 a#指定删除从开头开始n个重复值(integer) 1127.0.0.1:6379> lrange age 0 -11) "c"2) "d"3) "d"4) "c"5) "b"6) "a"127.0.0.1:6379> lrem age 2 c(integer) 2127.0.0.1:6379> lrange age 0 -11) "d"2) "d"3) "b"4) "a"127.0.0.1:6379> lindex age 1#获取索引值对应的key值,索引值从上往下从0开始"d"127.0.0.1:6379> lindex age 3"a"127.0.0.1:6379> lset age 1 a#基于已有的索引值更换key值OK127.0.0.1:6379> lset age 3 cOK127.0.0.1:6379> lrange age 0 -11) "d"2) "a"3) "b"4) "c"127.0.0.1:6379> lrange whd1 0 -11) "a"2) "b"3) "c"4) "d"5) "c"6) "b"7) "b"127.0.0.1:6379> ltrim whd1 0 3#仅保留索引范围的元素OK127.0.0.1:6379> lrange whd1  0 -11) "a"2) "b"3) "c"4) "d"

在指定元素的左/右插入元素

127.0.0.1:6379> linsert whd1 before a a1#在a的前面插入元素a1(integer) 5127.0.0.1:6379> lrange whd1 0 -11) "a1"2) "a"3) "b"4) "c"5) "d"127.0.0.1:6379> linsert whd1 after a a2#在a的后面插入元素a2(integer) 6127.0.0.1:6379> lrange whd1 0 -11) "a1"2) "a"3) "a2"4) "b"5) "c"6) "d"

由右插入元素

127.0.0.1:6379> rpush whd2 a b c d e(integer) 5127.0.0.1:6379> lrange whd2 0 -11) "a"2) "b"3) "c"4) "d"5) "e"127.0.0.1:6379> rpushx whd2 a1#在最后插入元素(integer) 6127.0.0.1:6379> lrange whd2 0 -11) "a"2) "b"3) "c"4) "d"5) "e"6) "a1"127.0.0.1:6379> rpop whd2#移除最后一个元素"a1"127.0.0.1:6379> lrange whd2 0 -11) "a"2) "b"3) "c"4) "d"5) "e"127.0.0.1:6379> rpoplpush whd2 whd2#组合使用,右弹出左插入,相当于把原key值最后一个元素插入到目标key值得最前面"e"127.0.0.1:6379> lrange whd2 0 -11) "e"2) "a"3) "b"4) "c"5) "d"127.0.0.1:6379> rpoplpush whd2 whd1"d"127.0.0.1:6379> lrange whd1 0 -11) "d"2) "a1"3) "a"4) "a2"5) "b"6) "c"7) "d"

Hash(散列)数据类型

hash用于存储对象,可以采用hash格式(对象列别和ID)构成键名

127.0.0.1:6379> hset caiwu name "lisi"#创建键,设置字段为name,值为lisi(integer) 1127.0.0.1:6379> hget caiwu name"lisi"127.0.0.1:6379> hset caiwu name "wangwu"#为该键添加字段name1,值为wangwu(integer) 0127.0.0.1:6379> hset caiwu name1 "wangwu"(integer) 1127.0.0.1:6379> hexists caiwu name#判断caiwu键中name字段是否存在(integer) 1127.0.0.1:6379> hlen caiwu#查看key值里面右多少个字段(integer) 2127.0.0.1:6379> hdel caiwu name#删除字段(integer) 1127.0.0.1:6379> hexists caiwu name(integer) 0127.0.0.1:6379> hsetnx caiwu name "aa"#添加字段(integer) 1127.0.0.1:6379> hget caiwu name"aa"127.0.0.1:6379> hset caiwu name2 2(integer) 1127.0.0.1:6379> hincrby caiwu name2 2#递增字段值(integer) 4127.0.0.1:6379> hincrby caiwu name2 -2#递减字段值(integer) 2127.0.0.1:6379> hgetall caiwu#查看key中所有信息1) "name1"2) "wangwu"3) "name"4) "aa"5) "name2"6) "2"127.0.0.1:6379> hmget caiwu name name1#查看key的多个字段值1) "aa"2) "wangwu"127.0.0.1:6379> hkeys caiwu#查看键的多个字段1) "name1"2) "name"3) "name2"127.0.0.1:6379> hvals caiwu#查看键中所有的字段值1) "wangwu"2) "aa"3) "2"
set数据类型(无序集合)

元素具有唯一性,不允许存在重复的成员,多个集合类型之间可以进行并集、交集和差集运算

127.0.0.1:6379> keys *1) "counter:__rand_int__"2) "myset:__rand_int__"3) "key:__rand_int__"4) "mylist"5) "caiwu"127.0.0.1:6379> sadd whd a b c d#添加键,设置键值(integer) 4127.0.0.1:6379> smembers whd#查看键值1) "a"2) "c"3) "b"4) "d"127.0.0.1:6379> scard whd#查看key值个数(integer) 4127.0.0.1:6379> sismember whd a#判断key值是否存在,存在则返回1,不存在则返回0(integer) 1127.0.0.1:6379> sismember whd g(integer) 0127.0.0.1:6379> srandmember whd#srandmember表示随机返回一个成员"b"127.0.0.1:6379> srandmember whd"a"

随机移除键值

127.0.0.1:6379> spop whd#随机移除数值,后面不加参数则默认移除一个,可以添加数值,表示移除该数值个数的元素"a"127.0.0.1:6379> smembers whd1) "c"2) "b"3) "d"127.0.0.1:6379> spop whd 21) "d"2) "b"127.0.0.1:6379> smembers whd1) "c"127.0.0.1:6379>  sadd whd a b e f#添加元素,有重复值不会插入(integer) 4127.0.0.1:6379> smembers whd1) "a"2) "e"3) "b"4) "c"5) "f"127.0.0.1:6379> srem whd a e b#移除指定元素(integer) 3127.0.0.1:6379> smembers whd1) "f"2) "c"127.0.0.1:6379> sadd whd1 a b#设置新键(integer) 2127.0.0.1:6379> smove whd whd1 c#讲whd中的c移动到whd1中(integer) 1127.0.0.1:6379> smembers whd1) "f"127.0.0.1:6379> smembers whd11) "a"2) "c"3) "b"
Sorted Set 数据类型(有序集合)

元素类型为String,元素具有唯一性,不能重复,每个元素都会关联一个double类型的分数score(表示权重),可以通过权重的大小排序,元素的score可以相同,可以用于在线游戏的积分排行榜

127.0.0.1:6379> zadd whd 1 "zhansan"#添加一个数值为1的成员zhansan(integer) 1127.0.0.1:6379> zadd whd 2 "lisi" 3 "wangwu"#添加两个成员,对应数值为2,3(integer) 2127.0.0.1:6379> zrange whd 0 -1#查看whd的各元素值1) "zhansan"2) "lisi"3) "wangwu"127.0.0.1:6379> zrange whd 0 -1 WITHSCORES#WITHSCORES表示返回的结果中包含每个成员及其分数,否则返回成员1) "zhansan"2) "1"3) "lisi"4) "2"5) "wangwu"6) "3"127.0.0.1:6379>  zrank whd "zhansan"#获取成员对应的位置索引,0代表第一个,nil表示不存在(integer) 0127.0.0.1:6379>  zrank whd "lisi"(integer) 1127.0.0.1:6379> zcard whd#查看成员数(integer) 3127.0.0.1:6379> zcount whd 2 3#分数满足表达式2<= score <=3的成员数量(integer) 2127.0.0.1:6379> zcount whd 1 2(integer) 2127.0.0.1:6379> zrem whd lisi#删除指定成员(integer) 1127.0.0.1:6379> zrange whd 0 -11) "zhansan"2) "wangwu"127.0.0.1:6379> zscore whd zhansan#返回成员所对应的分数"1"127.0.0.1:6379> zrange whd 0 -1 WITHSCORES1) "zhansan"2) "1"3) "wangwu"4) "3"127.0.0.1:6379> zincrby whd 5 zhansan#为成员的分数增加指定值"6"127.0.0.1:6379> zrange whd 0 -1 WITHSCORES1) "wangwu"2) "3"3) "zhansan"4) "6"127.0.0.1:6379> zadd whd 2 zhansan#添加已有成员设置分数时,会覆盖原因成员和分数,并返回为0.表示没有增加元素,但不表示没有修改(integer) 0127.0.0.1:6379> zrange whd 0 -1 WITHSCORES1) "zhansan"2) "2"3) "wangwu"4) "3"127.0.0.1:6379> zrangebyscore whd 1 2#获取分数满足1<=score<=2的成员1) "zhansan"2) "lisi"127.0.0.1:6379> zrange whd 0 -11) "lisi"2) "zhansan"3) "xuyi"4) "wangwu"127.0.0.1:6379> zrangebyscore whd -inf +inf limit 1 3#-inf表示第一个成员,+inf表示最后一个成员,这里表示匹配所有成员,然后limit显示索引1后面的三个成员1) "zhansan"2) "xuyi"3) "wangwu"127.0.0.1:6379> zremrangebyrank whd 0 1#删除位置索引满足表达式0<=rank<=1的元素(integer) 2127.0.0.1:6379> zcard whd(integer) 2127.0.0.1:6379> zrange whd 0 -11) "xuyi"2) "wangwu"

排序

127.0.0.1:6379> zadd whd1 1 a 2 b 3 d 4 e(integer) 4127.0.0.1:6379> zrevrange whd 0 -1 withscores1) "wangwu"2) "3"3) "xuyi"4) "2"127.0.0.1:6379> zrevrange whd1 0 -1 withscores#以位置索引从高到低显示区间的值1) "e"2) "4"3) "d"4) "3"5) "b"6) "2"7) "a"8) "1"

“Redis数据库的安装部署以及基本操作介绍”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯