Redis的相关概念不做介绍了,大家也可以先了解下Memcached,然后比较下二者的区别,就会有个整体的印象。 服务器端通常选择Linux , Redis对于linux是官方支持的,使用资料很多,需要下载相关服务器端程序 ,然后解压安装。因为能力和条件有限,我只简单介绍下
Redis的相关概念不做介绍了,大家也可以先了解下Memcached,然后比较下二者的区别,就会有个整体的印象。
服务器端通常选择Linux , Redis对于linux是官方支持的,使用资料很多,需要下载相关服务器端程序 ,然后解压安装。因为能力和条件有限,我只简单介绍下windows上如何安装和使用,有兴趣的可以娱乐一下。
服务器端程序下载地址:https://github.com/ServiceStack/redis-windows.git
如果不好操作的话到这来:http://download.csdn.net/detail/u013283727/8212831下载完后使用cmd进入下载文件的目录中,尝试以下操作:
Microsoft Windows [Version 6.1.7601] Copyright (c) 2009 Microsoft Corporation. All rights reserved. C:\>cd redis64-latest C:\redis64-latest>redis-server redis.windows.conf --maxmemory 200m _._ _.-``__ ''-._ _.-`` `. `_. ''-._ Redis 2.8.17 (00000000/0) 64 bit .-`` .-```. ```\/ _.,_ ''-._ ( ' , .-` | `, ) Running in stand alone mode |`-._`-...-` __...-.``-._|'` _.-'| Port: 6379 | `-._ `._ / _.-' | PID: 4552 `-._ `-._ `-./ _.-' _.-' |`-._`-._ `-.__.-' _.-'_.-'| | `-._`-._ _.-'_.-' | http://redis.io `-._ `-._`-.__.-'_.-' _.-' |`-._`-._ `-.__.-' _.-'_.-'| | `-._`-._ _.-'_.-' | `-._ `-._`-.__.-'_.-' _.-' `-._ `-.__.-' _.-' `-._ _.-' `-.__.-' [4552] 01 Dec 13:38:53.147 # Server started, Redis version 2.8.17 [4552] 01 Dec 13:38:53.147 * DB loaded from disk: 0.000 seconds [4552] 01 Dec 13:38:53.147 * The server is now ready to accept connections on po rt 6379
客户端使用java程序来连接,在这里介绍两种常用的方法
(Jar包直接找maven要:http://www.mvnrepository.com 一搜就出来了)1.Redisson
/** * @author fcs * Redisson Example */ public class RedissonTest { public static void main(String[] args) { //1.初始化 Config config = new Config(); config.setConnectionPoolSize(10); config.addAddress("127.0.0.1:6379"); Redisson redisson = Redisson.create(config); System.out.println("redis连接接成功。。。。。"); //2.测试concurrentMap,put时候就会同步到redis中 ConcurrentMap<String, String> map = redisson.getMap("firstMap"); map.put("changshengfeng", "男"); map.put("yongtaoliu", "男"); map.put("qiaozhu", "女"); ConcurrentMap resultMap = redisson.getMap("firstMap"); System.out.println("resultMap == "+resultMap.keySet()); //关闭连接 redisson.shutdown(); } }
2.Jedis
/** * @author fcs * test about jedis * Dec 1, 2014 */ public class JedisTest { private static Jedis jedis; @Before public void setup(){ jedis = new Jedis("127.0.0.1", 6379); System.out.println("Redis服务器已连接...."); // jedis.auth("admin"); //权限验证 } /** * redis 存储字符串 */ @Test public void testString(){ //添加数据 jedis.set("name", "fcs"); System.out.println(jedis.get("name"));//获取结果 jedis.append("name", "is handsome");//拼接 jedis.del("name");//删除某个键 System.out.println(jedis.get("name")); jedis.mset("name","changsheng","age","22","qq","646653132");//设置多个键值对 jedis.incr("age");//加1操作 在投票中可能用的上 System.out.println(jedis.get("name")+"--"+jedis.get("age")+"--"+jedis.get("qq")); } /** * 操作List */ @Test public void testList(){ jedis.del("java framework"); System.out.println(jedis.lrange("java framework", 0, -1)); //先向key java framework存放三条数据 jedis.lpush("java framework", "spring"); jedis.lpush("java framework", "struts"); jedis.lpush("java framework", "hibernate"); //再取出所有数据jedis.lrange是按范围取出 第一个是key 第二个是其实位置 第三个是结束位置 System.out.println(jedis.lrange("java framework", 0, -1)); jedis.del("java framework"); jedis.rpush("java framework", "spring"); jedis.rpush("java framework", "struts"); jedis.rpush("java framework", "hibernate"); //再取出所有数据jedis.lrange是按范围取出 第一个是key 第二个是其实位置 第三个是结束位置 System.out.println(jedis.lrange("java framework", 0, -1)); } /** * 操作Set */ @Test public void testSet(){ jedis.sadd("haha", "why"); jedis.sadd("haha", "you"); jedis.sadd("haha", "so"); jedis.sadd("haha", "diao"); jedis.sadd("haha", "?"); //移除 jedis.srem("haha", "?"); System.out.println("判断?是不是haha集合的元素:"+jedis.sismember("haha", "?")); System.out.println("获取所有加入的value:"+jedis.smembers("haha")); System.out.println("返回给定集合名的一个随机的value:"+jedis.srandmember("haha")); System.out.println("返回集合的元素个数:"+jedis.scard("haha")); } /** * redis 操作map */ @Test public void testmap(){ Map<String,String> map = new HashMap<String, String>(); map.put("name", "小露"); map.put("sex", "男"); map.put("email", "haha@fcs.com"); jedis.hmset("user", map);//相当于给map再取一个名字 List<String> rsmap = jedis.hmget("user", "name","sex");//后面是一个可变参数列表 去某个map中的一些key代表的值 System.out.println(rsmap); //删除map中的某个键值 jedis.hdel("user", "email"); System.out.println("删除后----email"+jedis.hmget("user", "email")); System.out.println("是否存在key为user的记录:"+jedis.exists("user")); System.out.println("key为user的map中存放的值的个数:"+jedis.hlen("user")); System.out.println("返回map对象中所有的key:"+jedis.hkeys("user")); System.out.println("返回map对象中所有的value:"+jedis.hvals("user")); //使用迭代器 Iterator<String> iter = jedis.hkeys("user").iterator(); System.out.println("***************使用迭代器***************"); while(iter.hasNext()){ String key = iter.next();//每次向后越过一个对象 System.out.println(key+":"+jedis.hmget("user", key));//迭代key 根据key再取值value } } /** * 这里在前面执行完之后直接再去拿值 试试这些进驻内存的数据是否还在 * 可以把服务器端关掉再重启 再直接运行这个方法看看 * 如果还有数据就说明该数据库自动完成了持久化 它有默认的持久化机制 */ @Test public void testNoSet(){ Iterator<String> iter = jedis.hkeys("user").iterator(); System.out.println("***************使用迭代器***************"); while(iter.hasNext()){ String key = iter.next();//每次向后越过一个对象 System.out.println(key+":"+jedis.hmget("user", key));//迭代key 根据key再取值value } } // @AfterClass 测试整个类时可以用 会关闭服务器端程序 // public static void close(){ // jedis.shutdown();//不能用@After 不然每次执行完一个方法都会关闭服务器 // System.out.println("连接已关闭....."); // } }
这时候可以看到cmd中有一些日志记录:(这就是它默认的持久化机制,可以在redis.windows.conf配置文件中查看)
[3972] 01 Dec 13:59:04.073 * 1 changes in 900 seconds. Saving... [3972] 01 Dec 13:59:04.229 # fork operation complete [3972] 01 Dec 13:59:04.229 * Background saving terminated with success [3972] 01 Dec 14:20:05.127 * 1 changes in 900 seconds. Saving... [3972] 01 Dec 14:20:05.267 # fork operation complete [3972] 01 Dec 14:20:05.267 * Background saving terminated with success [3972] 01 Dec 14:35:06.074 * 1 changes in 900 seconds. Saving... [3972] 01 Dec 14:35:06.204 # fork operation complete [3972] 01 Dec 14:35:06.224 * Background saving terminated with success哎,先到这吧。。。。

데이터베이스 및 프로그래밍에서 MySQL의 위치는 매우 중요합니다. 다양한 응용 프로그램 시나리오에서 널리 사용되는 오픈 소스 관계형 데이터베이스 관리 시스템입니다. 1) MySQL은 웹, 모바일 및 엔터프라이즈 레벨 시스템을 지원하는 효율적인 데이터 저장, 조직 및 검색 기능을 제공합니다. 2) 클라이언트 서버 아키텍처를 사용하고 여러 스토리지 엔진 및 인덱스 최적화를 지원합니다. 3) 기본 사용에는 테이블 작성 및 데이터 삽입이 포함되며 고급 사용에는 다중 테이블 조인 및 복잡한 쿼리가 포함됩니다. 4) SQL 구문 오류 및 성능 문제와 같은 자주 묻는 질문은 설명 명령 및 느린 쿼리 로그를 통해 디버깅 할 수 있습니다. 5) 성능 최적화 방법에는 인덱스의 합리적인 사용, 최적화 된 쿼리 및 캐시 사용이 포함됩니다. 모범 사례에는 거래 사용 및 준비된 체계가 포함됩니다

MySQL은 소규모 및 대기업에 적합합니다. 1) 소기업은 고객 정보 저장과 같은 기본 데이터 관리에 MySQL을 사용할 수 있습니다. 2) 대기업은 MySQL을 사용하여 대규모 데이터 및 복잡한 비즈니스 로직을 처리하여 쿼리 성능 및 트랜잭션 처리를 최적화 할 수 있습니다.

InnoDB는 팬텀 읽기를 차세대 점화 메커니즘을 통해 효과적으로 방지합니다. 1) Next-Keylocking은 Row Lock과 Gap Lock을 결합하여 레코드와 간격을 잠그기 위해 새로운 레코드가 삽입되지 않도록합니다. 2) 실제 응용 분야에서 쿼리를 최적화하고 격리 수준을 조정함으로써 잠금 경쟁을 줄이고 동시성 성능을 향상시킬 수 있습니다.

MySQL은 프로그래밍 언어가 아니지만 쿼리 언어 SQL은 프로그래밍 언어의 특성을 가지고 있습니다. 1. SQL은 조건부 판단, 루프 및 가변 작업을 지원합니다. 2. 저장된 절차, 트리거 및 기능을 통해 사용자는 데이터베이스에서 복잡한 논리 작업을 수행 할 수 있습니다.

MySQL은 오픈 소스 관계형 데이터베이스 관리 시스템으로, 주로 데이터를 신속하고 안정적으로 저장하고 검색하는 데 사용됩니다. 작업 원칙에는 클라이언트 요청, 쿼리 해상도, 쿼리 실행 및 반환 결과가 포함됩니다. 사용의 예로는 테이블 작성, 데이터 삽입 및 쿼리 및 조인 작업과 같은 고급 기능이 포함됩니다. 일반적인 오류에는 SQL 구문, 데이터 유형 및 권한이 포함되며 최적화 제안에는 인덱스 사용, 최적화 된 쿼리 및 테이블 분할이 포함됩니다.

MySQL은 데이터 저장, 관리, 쿼리 및 보안에 적합한 오픈 소스 관계형 데이터베이스 관리 시스템입니다. 1. 다양한 운영 체제를 지원하며 웹 응용 프로그램 및 기타 필드에서 널리 사용됩니다. 2. 클라이언트-서버 아키텍처 및 다양한 스토리지 엔진을 통해 MySQL은 데이터를 효율적으로 처리합니다. 3. 기본 사용에는 데이터베이스 및 테이블 작성, 데이터 삽입, 쿼리 및 업데이트가 포함됩니다. 4. 고급 사용에는 복잡한 쿼리 및 저장 프로 시저가 포함됩니다. 5. 설명 진술을 통해 일반적인 오류를 디버깅 할 수 있습니다. 6. 성능 최적화에는 인덱스의 합리적인 사용 및 최적화 된 쿼리 문이 포함됩니다.

MySQL은 성능, 신뢰성, 사용 편의성 및 커뮤니티 지원을 위해 선택됩니다. 1.MYSQL은 효율적인 데이터 저장 및 검색 기능을 제공하여 여러 데이터 유형 및 고급 쿼리 작업을 지원합니다. 2. 고객-서버 아키텍처 및 다중 스토리지 엔진을 채택하여 트랜잭션 및 쿼리 최적화를 지원합니다. 3. 사용하기 쉽고 다양한 운영 체제 및 프로그래밍 언어를 지원합니다. 4. 강력한 지역 사회 지원을 받고 풍부한 자원과 솔루션을 제공합니다.

InnoDB의 잠금 장치에는 공유 잠금 장치, 독점 잠금, 의도 잠금 장치, 레코드 잠금, 갭 잠금 및 다음 키 잠금 장치가 포함됩니다. 1. 공유 잠금을 사용하면 다른 트랜잭션을 읽지 않고 트랜잭션이 데이터를 읽을 수 있습니다. 2. 독점 잠금은 다른 트랜잭션이 데이터를 읽고 수정하는 것을 방지합니다. 3. 의도 잠금은 잠금 효율을 최적화합니다. 4. 레코드 잠금 잠금 인덱스 레코드. 5. 갭 잠금 잠금 장치 색인 기록 간격. 6. 다음 키 잠금은 데이터 일관성을 보장하기 위해 레코드 잠금과 갭 잠금의 조합입니다.


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

MinGW - Windows용 미니멀리스트 GNU
이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

WebStorm Mac 버전
유용한 JavaScript 개발 도구

SecList
SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.

Dreamweaver Mac版
시각적 웹 개발 도구

안전한 시험 브라우저
안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.
