Installez le plugin memcached sur MySQL et accédez à partir de Java

Mettez le plugin memcached dans MySQL

1. Installez libevent-devel

/bin/bash


# yum -y install libevent-devel
2. Ajoutez les paramètres Memcache à my.cnf

/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. Installez le plugin memcached

mysql


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

Confirmez que le plugin appelé daemon_memcached est inclus

4. Créez une table de test

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. Rendez-le accessible via Memcache

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";

** @@ (valeur dans la colonne name de innodb_memcache.containers) .accessible en tant que .key **

6. Implémentez le côté Java

↓ Téléchargez spymemcached à partir de http://www.java2s.com/Code/Jar/s/Downloadspymemcached27jar.htm

Cette fois, lors du POSTing ID et Pass avec JSON, 200 est renvoyé s'il y a enregistrement d'utilisateur et 401 est renvoyé s'il n'y a pas d'enregistrement d'utilisateur (ID et Pass ne correspondent pas). Créez l'API Rest avec JavaEE JAX-RS. J'ai essayé de.

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: doit être mappé aux colonnes CHAR, VARCHAR ou BLOB" **, il est donc impossible de gérer les champs de type JSON comme ils le sont avec Memcached **: cry: (telnet) Il y a une réponse quand je l'essaye, mais le contenu est foiré) → https://dev.mysql.com/doc/refman/5.6/ja/innodb-memcached-internals.html Je ne sais pas si CAST est correct, mais soyez en mesure de le gérer sans rien faire. > Oracle

(Une addition) J'ai utilisé une colonne générée pour générer une colonne de type TEXT à partir d'une colonne de type JSON et la spécifier dans value_columns.

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";

En conséquence, ** NG! ** Ce serait possible si l'inverse (du type texte au type json est généré en colonne), mais comme la requête de mise à jour utilisant la fonction json ne peut pas être utilisée, le goût est divisé par deux. ..

Recommended Posts

Installez le plugin memcached sur MySQL et accédez à partir de Java
Installez Java 9 sur Windows 10 et CentOS 7
Kick ShellScript sur le serveur depuis Java
Installez OpenJDK (Java) sur le dernier Ubuntu
Accéder à MySQL sur un conteneur Docker à partir d'un programme Java local (OS hôte)
Copier le référentiel et obtenir une erreur mysql2 lors de la première installation du bundle
Compilez et exécutez Java sur la ligne de commande
Installez Java sur Mac
Importez une instance et utilisez-la sur un autre écran
Langage Java du point de vue de Kotlin et C #
Installez le dernier pilote matériel d'ELRepo sur CentOS
Installez java et maven sur un nouveau mac en utilisant brew
Accédez à API.AI depuis Java
Installez Eclipse sur Mac et traduisez-le en japonais
21 Lire et exécuter le script à partir du fichier
Installez MySQL 5.6 sur CentOS6 [Comment spécifier la version]
Installez mecab-ipadic-neologd sur Sakura VPS (ubuntu18.04) avec une mémoire faible et utilisez-le depuis python
Accédez à l'API Web avec Get sur Android et traitez Json (Java pour le moment)
Trouvez la classe d'adresse et le type d'adresse à partir de l'adresse IP avec Java
JSON en Java et Jackson Partie 1 Renvoyer JSON à partir du serveur
[JDBC] J'ai essayé d'accéder à la base de données SQLite3 depuis Java.
Implémentez l'interface Java dans la classe JRuby et appelez-la depuis Java
Installez docker et docker-compose sur ubuntu dans les plus brefs délais
[Kotlin] Obtenez le constructeur / la méthode Java de KFunction et appelez-le
Corrigez le code de caractère en Java et lisez à partir de l'URL
Installez OpenJDK7 (JAVA) sur ubuntu 14.04
Installez le plug-in dans Eclipse
Installez Java sur WSL Ubuntu 18.04
Installez java 1.8.0 sur Amazon linux2
J'ai ouvert la barre de menu (menu d'options) sur Android et l'ai vue.
Comment installer et configurer l'outil de surveillance "Graphite" sur Ubuntu
Accédez à la grille de données en mémoire Apache Ignite à partir d'un client Java
Remarques sur la création de l'environnement de développement de Kotlin et la migration de Java vers Kotlin
De Java naissant (3 ans) à Node.js (4 ans). Et l'impression de retourner à Java
Installez Ubuntu20.04 sur RaspberryPi 4 et compilez Kubernetes pour exécuter le conteneur
[Java] Comment convertir du type String en type Path et obtenir le chemin
Étapes pour installer Maven sur Mac et l'utiliser avec Eclipse
Accéder à l'interface réseau avec Java
Installez Java et Tomcat avec Ansible
Installez JDK et JRE sur Ubuntu 16.10
Installation de Java Open JDK 8 sur CentOS 7
Accéder à Teradata depuis une application Java
Installer et configurer jenv sur macOS
Considération sur le framework de persistance Java 2017 (1)
Installez apache 2.4.46 à partir des sources sur CentOS 7
[MySQL] [java] Date et heure de réception
Activer les SDK Java 8 et Java 11 sur Ubuntu
La route de JavaScript à Java
Remarques sur le chemin et le package Java
Installer l'environnement de développement Java sur Mac
Trouvez la classe d'adresse et le type d'adresse à partir de l'adresse IP avec Java [décoction n ° 2]
Mettez à jour JAVA vers la dernière version vers 1.8.0_144 (lors du téléchargement à partir du Web et de la mise à jour)
JSON en Java et Jackson Part ③ Incorporer JSON dans HTML et l'utiliser à partir de JavaScript
[Java] Obtenir et gérer Json à partir d'une URL avec une API standard (javax.script)
[Java] Comment récupérer les paramètres passés du html côté serveur
Une note sur les différences entre les interfaces et les classes abstraites en Java