Installieren Sie das memcached Plugin unter MySQL und greifen Sie von Java aus zu

Fügen Sie das zwischengespeicherte Plugin in MySQL ein

1. Installieren Sie libevent-devel

/bin/bash


# yum -y install libevent-devel
2. Fügen Sie my.cnf Memcache-Einstellungen hinzu

/etc/my.cnf


daemon_memcached_option = "-p11211"
daemon_memcached_engine_lib_name = innodb_engine.so
daemon_memcached_r_batch_size = 1
daemon_memcached_w_batch_size = 1
3. Installieren Sie das memcached Plugin

mysql


mysql> INSTALL PLUGIN daemon_memcached soname "libmemcached.so";
mysql> show plugins;

Stellen Sie sicher, dass das Plugin mit dem Namen daemon_memcached enthalten ist

4. Erstellen Sie eine Testtabelle

mysql


mysql> use test
mysql> create table user (id varchar(16), passwd varchar(256), primary key(id)) engine=InnoDB;
mysql> insert into user (id, passwd) values ('user01', '5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8');
5. Machen Sie es über Memcache zugänglich

mysql


mysql> insert into innodb_memcache.containers (`name`,`db_schema`,`db_table`,`key_columns`,`value_columns`,`flags`,`cas_column`,`expire_time_column`,`unique_idx_name_on_key`) VALUES ('user', 'test', 'user', 'id', 'passwd',0,0,0,'PRIMARY');
mysql> UNINSTALL PLUGIN daemon_memcached;INSTALL PLUGIN daemon_memcached soname "libmemcached.so";

** @@ (Wert in der Namensspalte von innodb_memcache.containers) zugänglich als .key **

6. Implementieren Sie die Java-Seite

↓ Laden Sie spymemcached von http://www.java2s.com/Code/Jar/s/Downloadspymemcached27jar.htm herunter

Dieses Mal wird beim POSTEN von ID und Pass mit JSON 200 zurückgegeben, wenn eine Benutzerregistrierung vorliegt, und 401 wird zurückgegeben, wenn keine Benutzerregistrierung vorliegt (ID und Pass stimmen nicht überein). Erstellen Sie eine Rest-API mit JavaEE JAX-RS. Ich versuchte zu.

Memcache.java


package memcached;

import java.net.InetSocketAddress;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Map;

import javax.enterprise.context.RequestScoped;
import javax.ws.rs.Consumes;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.ResponseBuilder;

import net.spy.memcached.MemcachedClient;

@RequestScoped
@Path("/auth")
@Produces("application/json")
@Consumes("application/json")
public class Memcache {

	@POST
	public Response auth (Map<String, String> param) {
		ResponseBuilder response = null;
		try {
			MemcachedClient memcachedClient = new MemcachedClient (new InetSocketAddress("192.168.56.102", 11211));
			if ( sha256( param.get("password") ).equals( memcachedClient.get( "@@user." + param.get("id") ).toString() ) ) {
				response = Response.status(200);
			} else {
				response = Response.status(401);
			}
		} catch (Exception e) {
			response = Response.status(400);
		}
		return response.build();
	}

	private String sha256(String plaintext) throws Exception{
		MessageDigest md = MessageDigest.getInstance("SHA-256");
		StringBuilder sb = new StringBuilder();
		md.update(plaintext.getBytes());
	    for (byte b : md.digest()) {
	        String hex = String.format("%02x", b);
	        sb.append(hex);
	    }
	    return sb.toString();
	}
}

** "value_columns: muss CHAR-, VARCHAR- oder BLOB-Spalten zugeordnet werden" **, daher ist es unmöglich, Felder vom Typ JSON so zu behandeln, wie sie mit memcached sind **: cry: (telnet) Es gibt eine Antwort, wenn ich es versuche, aber der Inhalt ist durcheinander) → https://dev.mysql.com/doc/refman/5.6/ja/innodb-memcached-internals.html Ich bin mir nicht sicher, ob CAST in Ordnung ist, aber bitte können Sie damit umgehen, ohne etwas zu tun. > Oracle

(Zusatz) Ich habe die generierte Spalte verwendet, um eine Spalte vom Typ TEXT aus einer Spalte vom Typ JSON zu generieren und in value_columns anzugeben.

mysql


mysql> create table userinfo (id varchar(16), infojson json, userinfo text as (cast(infojson as char) engine=InnoDB;
mysql> insert into innodb_memcache.containers (`name`,`db_schema`,`db_table`,`key_columns`,`value_columns`,`flags`,`cas_column`,`expire_time_column`,`unique_idx_name_on_key`) VALUES ('userinfo', 'test', 'userinfo', 'id', 'userinfo',0,0,0,'PRIMARY');
mysql> UNINSTALL PLUGIN daemon_memcached;INSTALL PLUGIN daemon_memcached soname "libmemcached.so";

Infolgedessen ** NG! ** Es wäre möglich, wenn die Umkehrung (vom Texttyp zum JSON-Typ wird eine Spalte generiert), aber da die Aktualisierungsabfrage mit der JSON-Funktion nicht verwendet werden kann, wird der Geschmack halbiert. ..

Recommended Posts

Installieren Sie das memcached Plugin unter MySQL und greifen Sie von Java aus zu
Installieren Sie Java 9 unter Windows 10 und CentOS 7
Kick ShellScript auf dem Server von Java
Installieren Sie OpenJDK (Java) auf dem neuesten Ubuntu
Greifen Sie über ein lokales Java-Programm (Host-Betriebssystem) auf MySQL in einem Docker-Container zu
Kopieren des Repositorys und Abrufen eines mysql2-Fehlers bei der ersten Bundle-Installation
Kompilieren Sie Java und führen Sie es in der Befehlszeile aus
Installieren Sie Java auf dem Mac
Importieren Sie eine Instanz und verwenden Sie sie auf einem anderen Bildschirm
Java-Sprache aus der Sicht von Kotlin und C #
Installieren Sie den neuesten Hardwaretreiber von EL Repo unter CentOS
Installieren Sie Java und Maven mit Brew auf einem neuen Mac
Greifen Sie über Java auf API.AI zu
Installieren Sie Eclipse auf einem Mac und übersetzen Sie es ins Japanische
21 Lesen Sie das Skript aus der Datei und führen Sie es aus
Installieren Sie MySQL 5.6 unter CentOS6 [So geben Sie die Version an]
Installieren Sie mecab-ipadic-neologd auf Sakura VPS (ubuntu18.04) mit wenig Speicher und verwenden Sie es von Python
Greifen Sie mit Get on Android auf die Web-API zu und verarbeiten Sie Json (vorerst Java).
Suchen Sie die Adressklasse und den Adresstyp aus der IP-Adresse mit Java
JSON in Java und Jackson Teil 1 Gibt JSON vom Server zurück
[JDBC] Ich habe versucht, von Java aus auf die SQLite3-Datenbank zuzugreifen.
Implementieren Sie die Java-Schnittstelle in der JRuby-Klasse und rufen Sie sie von Java aus auf
Installieren Sie Docker und Docker-Compose in kürzester Zeit auf Ubuntu
[Kotlin] Holen Sie sich Java Constructor / Method von KFunction und rufen Sie es auf
Korrigieren Sie den Zeichencode in Java und lesen Sie von der URL
Installieren Sie OpenJDK7 (JAVA) unter Ubuntu 14.04
Installieren Sie das Plug-In in Eclipse
Installieren Sie Java unter WSL Ubuntu 18.04
Installieren Sie Java 1.8.0 unter Amazon Linux2
Ich habe die Menüleiste (Optionsmenü) unter Android geöffnet und gesehen.
So installieren und konfigurieren Sie das Überwachungstool "Graphite" unter Ubuntu
Greifen Sie von einem Java-Client aus auf das speicherinterne Datenraster Apache Ignite zu
Hinweise zum Erstellen der Kotlin-Entwicklungsumgebung und zur Migration von Java nach Kotlin
Vom jungen Java (3 Jahre) bis zu Node.js (4 Jahre). Und der Eindruck, nach Java zurückzukehren
Installieren Sie Ubuntu20.04 auf RaspberryPi 4 und erstellen Sie Kubernetes, um den Container auszuführen
[Java] So konvertieren Sie vom Typ String in den Pfadtyp und erhalten den Pfad
Schritte zum Installieren von Maven auf einem Mac und zur Verwendung mit Eclipse
Greifen Sie mit Java auf die Netzwerkschnittstelle zu
Installieren Sie Java und Tomcat mit Ansible
Installieren Sie JDK und JRE unter Ubuntu 16.10
Java Open JDK 8 unter CentOS 7 installieren
Greifen Sie über eine Java-Anwendung auf Teradata zu
Installieren und konfigurieren Sie jenv unter macOS
Überlegungen zum Java Persistence Framework 2017 (1)
Installieren Sie Apache 2.4.46 von der Quelle unter CentOS 7
[MySQL] [Java] Datum und Uhrzeit empfangen
Aktivieren Sie Java 8- und Java 11-SDKs unter Ubuntu
Der Weg von JavaScript nach Java
Hinweise zum Java-Pfad und -Paket
Installieren Sie die Java-Entwicklungsumgebung auf dem Mac
Finden Sie die Adressklasse und den Adresstyp aus der IP-Adresse mit Java [Abkochung Nr. 2]
Aktualisieren Sie JAVA auf die neueste Version auf 1.8.0_144 (beim Herunterladen aus dem Internet und Aktualisieren)
JSON in Java und Jackson Teil ③ Betten Sie JSON in HTML ein und verwenden Sie es aus JavaScript
[Java] Json von der URL mit der Standard-API (javax.script) abrufen und verarbeiten
[Java] So rufen Sie die von HTML auf der Serverseite übergebenen Parameter ab
Ein Hinweis zu den Unterschieden zwischen Schnittstellen und abstrakten Klassen in Java