新人入坑必备,Redis一定会用到的吐血总结
mhr18 2024-10-10 06:52 20 浏览 0 评论
一、什么是Redis
Redis是一个使用C语言开发的开源的高性能的key-value存储系统,我们可以把它近似理解为Java Map。简单来讲,Redis是一种NOSQL内存数据库,小伙伴们可不要把它理解为NO SQL(不是SQL),它的全称是Not Only SQL(不仅仅是SQL),换个层面来讲,它是一种非关系型的数据库,它是作为关系型数据库的良好补充,它与传统的MySQL,Oracle不同之处在于,它是通过在内存中读写数据,大大提高了读写速度。可以说,Redis是为了解决网站高并发、高可用、高可扩展、大数据存储等一系列问题而产生的数据库解决方案,不可或缺的一部分。
它具有以下特点:
1、Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。
2、Redis不仅仅支持简单的key-value类型的数据,同时还提供string、list、set、sortedset、hash等数据结构的存储。
3、Redis支持数据的备份,即master-slave模式的数据备份。
Redis有五种键值类型:
- String字符类型
- hash散列类型
- list列表类型
- set集合类型
- sortedset有序集合类型
而本文将基于Redis5.0为例来介绍Redis一些相关命令的使用和踩过的坑
二、关于Redis的安装与启动
环境准备
- CentOS7 (未安装Development Tools)
- Redis5.0-rc3.tar.gz
安装教程百度一大堆,这里我就不说了,自行百度即可
在线环境
官网似乎提供了一个在线的Redis平台,链接在这里:http://try.redis.io/
Redis启动
前端启动
按照我所提供的教程安装以后,我们只需要输入命令redis-server即可,界面如下:
前端停止启动
- 强制关闭:Ctrl+c
- 正常关闭[root@sakura]# redis-cli shutdown
后端启动
因为Redis在实际使用中不会只是一个Redis单独工作,启动和关闭方式中的ip地址和端口号可以在配置文件中自行修改,下面会有修改方式.
启动方式
- 需要将redis解压之后的源码包中的redis.conf文件拷贝到bin目录下.直接复制粘贴即可
- 修改redis.conf文件,将daemonize改为yes(vi redis.conf进去,:/daemonize搜索).
- 使用命令后端启动redis.命令行redis-server redis.conf(以配置文件启动)
- 查看是否启动成功.命令行 ps -aux | grep redis (直接查看redis的进程)
如果你之前按照我所提供的教程修改过,这一过程可以直接忽略就好
关闭方式
- 强制关闭:kill -9 PID
- 正常关闭:redis-cli -h ip地址 -p 端口号(默认端口号是6379) shutdown
在项目中,建议使用正常关闭。 因为redis作为缓存来使用的话,将数据存储到内存中,如果使用正常关闭,则会将内存数据持久化到本地之后,再关闭。如果是强制关闭,则不会进行持久化操作,可能会造成部分数据的丢失。
Redis客户端启动
启动客户端命令:[root@sakura]# redis-cli -h ip地址 -p 端口号
由于默认IP是127.0.0.1,端口是6379,我们只需要输入命令redis-cli即可
退出:127.0.0.1:6379> quit即可
三、Redis数据类型及常用命令讲解
1、Redis-String
string使用环境:主要用于保存json格式的字符串
赋值
set key value:设定key持有指定的字符串value,如果该key存在则进行覆盖操作,总是返回"OK",如果赋予相同的key,新的value会覆盖老的value
example:
127.0.0.1:6379> set username zhangsan OK
取值
get key:获取key的value。如果与该key关联的value不是string类型,redis将返回错误信息,因为get命令只能用于获取string value;如果该key不存在,返回nil
example:
127.0.0.1:6379> get username "zhangsan"
删除
del key:删除指定key,返回值是数字类型,表示删了几条数据
example:
127.0.0.1:6379> del username (integer) 1
扩展
getset key value:先获取该key的值,然后再设置该key的值
example:
127.0.0.1:6379> getset username zhangsan (nil) 127.0.0.1:6379> keys * 1) "username" 127.0.0.1:6379> get username "zhangsan"
incr key:将指定的key的value原子性的递增1,如果该key不存在,其初始值为0,在incr之后的值为1,如果value的值不能转成整型,如hello,该操作将执行失败并返回相应的错误信息,相当于++(作用:统计网站访客人数,当计数器)
example:
127.0.0.1:6379> set age 18 OK 127.0.0.1:6379> incr age (integer) 19
decr key:将指定的key的value原子性的递减1,如果该key不存在,其初始值为0,在incr之后的值为-1,如果value的值不能转成整型,如hello,该操作将执行失败并返回相应的错误信息,相当于–i
example:
127.0.0.1:6379> set age 18 OK 127.0.0.1:6379> decr age (integer) 17
append key value:拼接字符串,如果该key存在,则在原有的value后追加该值,如果该key不存在,则重新创建一个key/value
example:
127.0.0.1:6379> set information hel OK 127.0.0.1:6379> append information lo (integer) 5 127.0.0.1:6379> get information "hello"
incrby和decrby:只能对字符串是数字的进行操作,incrby key value是对原有的key的值增加value,而decrby key value是对原有的key的值减少value
example:
127.0.0.1:6379> get age "17" 127.0.0.1:6379> incrby age 10 (integer) 27 127.0.0.1:6379> decrby age 10 (integer) 17 127.0.0.1:6379> get information "hello" 127.0.0.1:6379> incrby information 10 (error) ERR value is not an integer or out of range 127.0.0.1:6379> decrby information 10 (error) ERR value is not an integer or out of range
2、Redis-hash
Redis中的hash类型可以看成具有string key和string value的map容器,所以该类型非常适合于存储值对象的信息。如username,password和age等。如果hash中包含很少的字段,那么该类型的数据也将仅占用很少的磁盘空间。每一个hash可以存储4294967295个键值对。
hash特点:占用的磁盘空间极少
赋值:
hset key field value:为指定的key设定field/value对(键值对)
example:
127.0.0.1:6379> hset key1 field1 123 (integer) 1
hmset key field value[field2 value2…]:设置key中的多个field/value
example:
127.0.0.1:6379> hmset aaa name kitty age 20 OK
取值:
hget key filed:获取指定的key的field的值
example:
127.0.0.1:6379> hget key1 field1 "123"
hmget key filed1 field2…:获取key中的多个field的值
example:
127.0.0.1:6379> hmget aaa name age 1) "kitty" 2) "20"
hgetall key:获取key中的所有field-value2
example:
127.0.0.1:6379> hgetall aaa 1) "name" 2) "kitty" 3) "age" 4) "20"
删除
hdel key field[field…]:可以删除一个或多个字段,返回值是被删除的字段个数
example:
127.0.0.1:6379> hdel key1 field1 (integer) 1
del key:删除整个list
example:
127.0.0.1:6379> del aaa (integer) 1
增加数字
hincrby key field increment:设置key中的field增加increment,如age增加20
example:
127.0.0.1:6379> hmset aaa name kitty age 20 OK 127.0.0.1:6379> hincrby aaa age 20 (integer) 40
扩展命令
hexists key field:判断指定的key中的field是否存在
example:
127.0.0.1:6379> hexists aaa name (integer) 1 127.0.0.1:6379> hexists aaa aaaa (integer) 0
hlen key:获取key所包含的field的数量
example:
127.0.0.1:6379> hlen aaa (integer) 2
hkeys key:获得所有的字段
example:
127.0.0.1:6379> hkeys aaa 1) "name" 2) "age"
3、Redis-list
Redis中list选取的是链表,因为在Redis操作中,最多的操作是进行元素的增删
赋值
lpush key value [value1 value2 …] 在指定的key所关联的list头部插入所有的value,如果该key不存在,该命令在插入之前创建一个与该key关联的空链表,之后再向该链表的头部插入数据,插入成功,返回元素的个数。
example:
127.0.0.1:6379> lpush score1 1 2 3 4 5 (integer) 5
rpush key value [value1 value2 …] 在该list的尾部添加元素
example:
127.0.0.1:6379> rpush score2 1 2 3 4 5 (integer) 5
取值
lrange key start end:获取链表中从start到end的元素的值,start、end从0开始计数;也可以为负数,若为-1则表示链表尾部的元素,-2表示倒数第二个,以此类推…
example:
127.0.0.1:6379> lrange score1 0 -1 1) "5" 2) "4" 3) "3" 4) "2" 5) "1" 127.0.0.1:6379> lrange score2 0 -1 1) "1" 2) "2" 3) "3" 4) "4" 5) "5"
删值
lpop key:返回并弹出指定的key关联的链表中的第一个元素,即头部元素。如果该key不存在,返回nil;若key存在,则返回链表的头部元素
example:
127.0.0.1:6379> lpop score1 "5" 127.0.0.1:6379> lpop score2 "1"
rpop key:从尾部弹出元素
example:
127.0.0.1:6379> rpop score1 "1" 127.0.0.1:6379> rpop score2 "5"
扩展
llen key:返回指定的key关联的链表中的元素的数量
example:
127.0.0.1:6379> llen score1 (integer) 3 127.0.0.1:6379> llen score2 (integer) 3
lrem key count value:删除count个值为value的元素,如果count大于0,从头到尾遍历并删除count个值为value的元素,如果count小于0,则从尾到头遍历并删除,如果count等于0,则删除链表中所有等于value的元素。
example:
127.0.0.1:6379> lrem score1 1 2 (integer) 1 127.0.0.1:6379> lrem score2 1 2 (integer) 1
通过索引替换
lset key index value:设置链表中的index的脚标的元素值,0代表链表的头元素,-1代表链表的尾元素。操作链表的脚标不存在则抛出异常
example:
127.0.0.1:6379> lset score1 0 1 OK 127.0.0.1:6379> lset score2 0 1 OK
在索引前/后插入元素
linsert key before|after pivot value:在pivot元素前或者后插入value这个元素
example:
127.0.0.1:6379> linsert score1 before 3 aaa (integer) 3 127.0.0.1:6379> lrange score1 0 -1 1) "1" 2) "aaa" 3) "3" 127.0.0.1:6379> linsert score1 after 3 bbb (integer) 4 127.0.0.1:6379> lrange score1 0 -1 1) "1" 2) "aaa" 3) "3" 4) "bbb"
rpoplpush resource destination:将链表中的尾部元素弹出并添加到头部。[循环操作]
example:
127.0.0.1:6379> lrange score1 0 -1 1) "1" 2) "aaa" 3) "3" 127.0.0.1:6379> lrange score2 0 -1 1) "bbb" 2) "1" 3) "4" 127.0.0.1:6379> rpoplpush score1 score2 "3" 127.0.0.1:6379> lrange score1 0 -1 1) "1" 2) "aaa" 127.0.0.1:6379> lrange score2 0 -1 1) "3" 2) "bbb" 3) "1" 4) "4"
4、Redis-set
赋值
sadd key value[value1 value2…]:向set中添加元素,如果该key的值已有则不会重复添加
example:
127.0.0.1:6379> sadd abc 1 2 3 4 (integer) 4
srem key member[member1 member2…]:删除set中指定的成员
example:
127.0.0.1:6379> srem abc 1 3 (integer) 2
取值
smembers key:获取set中所有的成员
example:
127.0.0.1:6379> smembers abc 1) "2" 2) "4"
sismember key member:判断参数中指定的成员是否在该set中,1表示存在,0表示不存在或者该key本身就不存在(无论集合中有多少元素都可以极速的返回结果)
example:
127.0.0.1:6379> sismember abc 2 (integer) 1 127.0.0.1:6379> sismember abc 3 (integer) 0
删值
集合运算
差集运算
sdiff key1 key2…:返回key1与key2中相差的成员,而且与key的顺序有关,即返回差集
example:
127.0.0.1:6379> sadd set1 1 2 3 4 5 (integer) 5 127.0.0.1:6379> sadd set2 3 4 5 6 7 (integer) 5 127.0.0.1:6379> sdiff set1 set2 1) "1" 2) "2" 127.0.0.1:6379> sdiff set2 set1 1) "6" 2) "7"
交集运算
sinter key1 key2…:返回交集
example:
127.0.0.1:6379> sinter set1 set2 1) "3" 2) "4" 3) "5"
并集运算
sunion key1 key2…:返回并集
example:
127.0.0.1:6379> sunion set1 set2 1) "1" 2) "2" 3) "3" 4) "4" 5) "5" 6) "6" 7) "7"
扩展命令
scard key:获取set中成员的数量
example:
127.0.0.1:6379> scard set1 (integer) 5
srandmember key:随机返回set中的一个成员
example:
127.0.0.1:6379> srandmember set1 "1" 127.0.0.1:6379> srandmember set1 "5" 127.0.0.1:6379> srandmember set1 "3"
sdiffstore destination key1 key2…:将key1 key2…相差的成员存储在destination上
example:
127.0.0.1:6379> sdiffstore set3 set1 set2 (integer) 2 127.0.0.1:6379> smembers set3 1) "1" 2) "2"
sinterstore destination key[key…]:将返回的交集存储在destination上
example:
127.0.0.1:6379> sinterstore set4 set1 set2 (integer) 3 127.0.0.1:6379> smembers set4 1) "3" 2) "4" 3) "5"
5、Redis-sortedset
赋值
zadd key score member score2 member2…:将所有成员以及该成员的分数存放到sorted-set中。如果该元素已经存在则会用新的分数代替原有的分数,返回值是新加入到集合中的元素个数,不包含之前已经存在的元素。
example:
127.0.0.1:6379> zadd list 50 xiaoming 100 xiaohong 200 xiaozhang (integer) 3
取值
zscore key member:返回指定成员的分数
example:
127.0.0.1:6379> zscore list xiaohong "100"
zcard key:获取集合中的成员数量
example:
127.0.0.1:6379> zcard list (integer) 3
范围查询
zrange key start end[withscores]:获取集合中脚标为start-end的成员,[withscores]参数表明返回的成员包含其分数(分数从小到大排序)
example:
127.0.0.1:6379> zrange list 0 -1 1) "xiaoming" 2) "xiaohong" 3) "xiaozhang" 127.0.0.1:6379> zrange list 0 -1 withscores 1) "xiaoming" 2) "50" 3) "xiaohong" 4) "100" 5) "xiaozhang" 6) "200"
zrevrange key start end[withscores]:获取集合中脚标为start-end的成员,[withscores]参数表明返回的成员包含其分数(分数从大到小排序)
example:
127.0.0.1:6379> zrevrange list 0 -1 1) "xiaozhang" 2) "xiaohong" 3) "xiaoming" 127.0.0.1:6379> zrevrange list 0 -1 withscores 1) "xiaozhang" 2) "200" 3) "xiaohong" 4) "100" 5) "xiaoming" 6) "50"
删值
zrem key member[member…]:移除集合中指定的成员,可以指定多个成员
example:
127.0.0.1:6379> zrem list xiaozhang (integer) 1
zremrangebyrank key start stop:按照排名范围删除元素
example:
127.0.0.1:6379> zremrangebyrank list 0 1 (integer) 2
zremrangebyscore key min max:按照分数范围删除元素
example:
127.0.0.1:6379> zremrangebyscore list 50 120 (integer) 2
扩展命令
zrangebyscore key min max [withscores][LIMIT offset count]:返回分数在[min,max]的成员并按照分数从低到高排序。[withscores]:显示分数;[LIMIT offset count]:offset,表明从脚标为offset的元素开始并返回count个成员
example:
127.0.0.1:6379> zrangebyscore list 50 120 withscores limit 0 2 1) "xiaoming" 2) "50" 3) "xiaohong" 4) "100"
zincrby key increment member:设置指定成员的增加的分数,返回值是更改后的分数
example:
127.0.0.1:6379> zincrby list 30 xiaoming "80"
zcount key min max:获取分数在[min,max]之间的成员
example:
127.0.0.1:6379> zcount list 80 120 (integer) 2
zrank key member:返回成员在集合中的排名(索引从小到大)
example:
127.0.0.1:6379> zrank list xiaohong (integer) 1
zrevrank key member:返回成员在集合中的排名。(索引从大到小)
example:
127.0.0.1:6379> zrevrank list xiaozhang (integer) 0
6、通用Redis命令【重点】
keys pattern:获取所有与pattern匹配的key,返回所有与该key匹配的keys。*表示任意一个或者多个字符
通配符:
- *表示任意0个或者多个字符
- ?表示任意一个字符
exits key:判断该key是否存在,1表示存在,0表示不存在
example:
127.0.0.1:6379> exists username (integer) 1 127.0.0.1:6379> exists admin (integer) 0
rename key newkey:为当前的key重命名
127.0.0.1:6379> rename username user OK 127.0.0.1:6379> keys * 1) "list" 2) "abc" 3) "set1" 4) "information" 5) "set2" 6) "age" 7) "score2" 8) "set4" 9) "score1" 10) "set3" 11) "user"
type key:获取指定的key的值类型,该命令将以字符串的格式返回。返回的字符串为string、list、set、hash和zset,
如果key不存在返回none
example:
127.0.0.1:6379> type user string 127.0.0.1:6379> type list zset
expire key:设置过期时间,单位:秒 如果某个key过期,redis会将其删除
example:
127.0.0.1:6379> expire abc 10 (integer) 1 127.0.0.1:6379> keys * 1) "list" 2) "set1" 3) "information" 4) "set2" 5) "age" 6) "score2" 7) "set4" 8) "score1" 9) "set3" 10) "user"
ttl key:获取该key所剩的超时时间,如果没有设置超时时间,返回-1.如果返回-2表示超时不存在。
example:
127.0.0.1:6379> expire user 10 (integer) 1 127.0.0.1:6379> ttl user (integer) 3 127.0.0.1:6379> ttl user (integer) -2 127.0.0.1:6379> keys * 1) "list" 2) "set1" 3) "information" 4) "set2" 5) "age" 6) "score2" 7) "set4" 8) "score1" 9) "set3" 127.0.0.1:6379> ttl information (integer) -1
7、Redis其他特性
消息订阅与发布
subscribe channel:订阅频道
example:
127.0.0.1:6379> subscribe mychat Reading messages... (press Ctrl-C to quit) 1) "subscribe" 2) "mychat" 3) (integer) 1
psubscribe channel*:批量订阅频道
example:
127.0.0.1:6379> psubscribe s* Reading messages... (press Ctrl-C to quit) 1) "psubscribe" 2) "s*" 3) (integer) 1
publish channel content:在指定的频道中发布消息
example:
127.0.0.1:6379> publish mychat 'today is a newday' (integer) 1
多数据库
传统数据库如MySQL数据库可以自己用语句自定义创建,我们可以通过create database xxxx进行创建。Redis 也是有数据库的,不过Redis已经提前创建好了。在redis默认有十六个数据库,0,1,2…15,在radis上所作的所有数据操作,都是默认在0号数据库上操作,数据库与数据库之间是不能共享键值对的。我们可以把Redis数据库理解为一个map集合。
切换数据库
select 数据库名:切换数据库
example:
127.0.0.1:6379> select 1 OK 127.0.0.1:6379[1]> select 15 OK 127.0.0.1:6379[15]> select 16 (error) ERR DB index is out of range
数据库的移植
move newkey 数据库名:将当前数据库的key移植到指定的数据库中
example:
127.0.0.1:6379> keys * 1) "list" 2) "set1" 3) "information" 4) "set2" 5) "age" 6) "score2" 7) "set4" 8) "score1" 9) "set3" 127.0.0.1:6379> move information 1 (integer) 1 127.0.0.1:6379> keys * 1) "list" 2) "set1" 3) "set2" 4) "age" 5) "score2" 6) "set4" 7) "score1" 8) "set3" 127.0.0.1:6379> select 1 OK 127.0.0.1:6379[1]> keys * 1) "information"
数据库清空
flushdb 删除当前数据库中的所有key
flushall 删除所有数据库中的所有key
服务器命令
ping 测试连接是否存活
example:
127.0.0.1:6379> ping PONG
echo 在命令行打印一些内容
example:
127.0.0.1:6379> echo hehe "hehe"
quit/Ctrl+C 退出客户端
example:
127.0.0.1:6379> quit
dbsize 返回当前数据库中的key的数目
example:
127.0.0.1:6379> dbsize (integer) 8
info 获取服务器的信息和统计
example:
127.0.0.1:6379> info # Server redis_version:4.9.103 redis_git_sha1:00000000 redis_git_dirty:0 redis_build_id:d727e4f6fe88cefd redis_mode:standalone ...... ......
8、Redis持久化策略
RDB策略
RDB是redis的默认持久化机制,相当于照快照,保存的是一种状态
优点:
- 快照速度极快,还原数据速度极快
- 适用于灾难备份
缺点:
- 小内存机器不适合使用
RDB机制符合要求就会照快照(随时随地启动),会占用一定的系统资源(突然的)很可能内存不足直接宕机。(宕机后,服务器会关闭,属于非正常关闭,数据会丢失)
RDB机制适用于内存比较充裕的计算机
RDB是何时进行照快照?
- 服务器正常关闭时,会照一次快照
- key满足一定条件时,会照一次快照
- save 900 1#每900秒至少有1个key发生变化,则dump内存快照
- save 300 10#每300秒至少有10个key发生变化,则dump内存快照
- save 60 10000#每60秒至少有10000个key发生变化,则dump内存快照
AOF策略
AOF策略是一种使用日志功能保存数据操作的机制,默认AOF机制关闭的,它的操作只会保存导致key变化的语句
优点:
- 持续性占用极少量的内存资源
缺点:
- 日志文件会特别大,不适用于灾难恢复
- 恢复效率远远低于RDB
AOF机制适用于内存比较小的计算机
AOF是如何进行数据备份的呢?
- 每秒同步:每秒进行一次AOF保存数据,安全性低,比较节省系统资源
- 每修改同步:只要有key变化语句,就进行AOF保存数据,比较安全,但是这样做极为浪费系统资源,降低效率
- 不同步:不进行任何持久化操作,这种配置不安全
AOF的配置
- always #每秒有数据修改发生时都会写入AOF文件
- everysec #每秒同步一次,该策略为AOF的缺省策略
- no #从不同步。高效但是数据不会被持久化
开启AOF机制的方法
- 在redis.config文件中用:/aof找到对应的段落
- 将appendonly no改成appendonly yes
- 再修改其中一段成appendfsync always即可
想与更多小伙伴交流沟通学习私信回复“群”,一起学习进步
相关推荐
- SQL入门知识篇(sql入门新手教程视频)
-
一、什么是数据库?什么是SQL?1、数据库:存放数据,可以很多人一起使用2、关系数据库:多张表+各表之间的关系3、一张表需要包含列、列名、行4、主键:一列(或一组列),其值能够唯一区分表中的每个行。5...
- postgresql实现跨库查询-dblink的妙用
-
技术导语:用惯了oracle的dblink,转战postgresql,会一时摸不着头脑。本期就重点详细讲解postgresql如何安装dblink模块及如何使用dblink实现跨库查询。安装cont...
- Oracle VM VirtualBox虚拟机软件(oracle vm virtualbox win10)
-
OracleVMVirtualBox是一款完全免费的虚拟机软件,下载银行有提供下载,软件支持安装windows、linux等多个操作系统,让用户可以在一台设备上实现多个操作系统的操作。同时软件有着...
- 开源 SPL 轻松应对 T+0(开源srs)
-
T+0问题T+0查询是指实时数据查询,数据查询统计时将涉及到最新产生的数据。在数据量不大时,T+0很容易完成,直接基于生产数据库查询就可以了。但是,当数据量积累到一定程度时,在生产库中进行大数据...
- 中小企业佳选正睿ZI1TS4-4536服务器评测
-
随着科技的不断发展,各行各业对于数据使用越加频繁,同时针对服务器的选择方面也就越来越多样化和细分化。那么对于我们用户来说,如何选择符合自身业务需求和最优性价比的产品呢?笔者将通过刚刚购买的这台服务器的...
- MFC转QT:Qt基础知识(mfc和qt的区别)
-
1.Qt框架概述Qt的历史和版本Qt是一个跨平台的C++应用程序开发框架,由挪威公司Trolltech(现为QtCompany)于1991年创建。Qt的发展历程:1991年:Qt项目启动1995年...
- 数据库,QSqlTableModel(数据库有哪些)
-
QMYSQL——mysqlQSQLITE——sqliteQOICQ——orcale所需头文件.pro增加sql#include<QSqlDatabase>#include<Q...
- python通过oledb连接dbf数据库(python连接jdbc)
-
起因:因为工作需要,需要读取dbf文件和系统数据中数据进行校对,因为知道dbf文件可以用sql查询,所以想能不能像mysql/oracle那样连接,再调用执行sql方法,通过一系列百度,尝试,最终通过...
- Excel常用技能分享与探讨(5-宏与VBA简介 VBA与数据库)
-
在VBA(VisualBasicforApplications)中使用数据库(如Access、SQLServer、MySQL等)具有以下优点,适用于需要高效数据管理和复杂业务逻辑的场景:1....
- Excel常用技能分享与探讨(5-宏与VBA简介 VBA与数据库-二)
-
以下是常见数据库软件的详细配置步骤,涵盖安装、驱动配置、服务启动及基本设置,确保VBA能够顺利连接:一、MicrosoftAccess适用场景:小型本地数据库,无需独立服务。配置步骤:安装Acces...
- Windows Docker 安装(docker安装windows容器)
-
Docker并非是一个通用的容器工具,它依赖于已存在并运行的Linux内核环境。Docker实质上是在已经运行的Linux下制造了一个隔离的文件环境,因此它执行的效率几乎等同于所部署的L...
- Windows下安装Ubuntu虚拟机方法(windows下安装ubuntu20)
-
在Windows下安装Ubuntu虚拟机。选择使OracleVMVirtualBox安装Ubuntu虚拟机。1.下载和安装OracleVMVirtualBox:访问OracleVMVir...
- java入门教程1 - 安装和配置(win和linux)
-
windows安装和配置安装javahttps://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html目前大部分项目的...
- Centos7 安装Tomcat8服务及配置jdk1.8教程
-
1、下载jdk1.8压缩包下载地址:https://www.oracle.com/java/technologies/javase/javase8-archive-downloads.htmltom...
- 全网最完整的免费java教程讲义(一)——java配置和安装
-
一,安装Java1)安装JDK要学习和使用java,首先需要安装JDK(JavaDevelopemntKit),相当于java安装包。Java的下载页在甲骨文官网上:https://www.or...
你 发表评论:
欢迎- 一周热门
- 最近发表
-
- SQL入门知识篇(sql入门新手教程视频)
- postgresql实现跨库查询-dblink的妙用
- Oracle VM VirtualBox虚拟机软件(oracle vm virtualbox win10)
- 开源 SPL 轻松应对 T+0(开源srs)
- 中小企业佳选正睿ZI1TS4-4536服务器评测
- MFC转QT:Qt基础知识(mfc和qt的区别)
- 数据库,QSqlTableModel(数据库有哪些)
- python通过oledb连接dbf数据库(python连接jdbc)
- Excel常用技能分享与探讨(5-宏与VBA简介 VBA与数据库)
- Excel常用技能分享与探讨(5-宏与VBA简介 VBA与数据库-二)
- 标签列表
-
- oracle位图索引 (63)
- oracle批量插入数据 (62)
- oracle事务隔离级别 (53)
- oracle 空为0 (50)
- oracle主从同步 (55)
- oracle 乐观锁 (51)
- redis 命令 (78)
- php redis (88)
- redis 存储 (66)
- redis 锁 (69)
- 启动 redis (66)
- redis 时间 (56)
- redis 删除 (67)
- redis内存 (57)
- redis并发 (52)
- redis 主从 (69)
- redis 订阅 (51)
- redis 登录 (54)
- redis 面试 (58)
- 阿里 redis (59)
- redis 搭建 (53)
- redis的缓存 (55)
- lua redis (58)
- redis 连接池 (61)
- redis 限流 (51)